summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2019-10-10 20:41:24 -0700
committerLinux Build Service Account <lnxbuild@localhost>2019-10-10 20:41:24 -0700
commit1457f1765707e2b7290a228f03b97dbae7ef4d2d (patch)
tree7b80a139ecec320529e84cdde10ccd06ff2fbe9f
parent39a2d85fdbed66deb6a8aabbe482c645c7cd18be (diff)
parent84a07bbd2f7e0d5c7b906a74b006c17cf05f931c (diff)
Merge 84a07bbd2f7e0d5c7b906a74b006c17cf05f931c on remote branch
Change-Id: I7427f32b145162f16b9bae11bc51f1a56f1933aa
-rw-r--r--QcomModulePkg/Library/avb/libavb/avb_slot_verify.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/QcomModulePkg/Library/avb/libavb/avb_slot_verify.c b/QcomModulePkg/Library/avb/libavb/avb_slot_verify.c
index 62bf5f17f6..fb6fc7976b 100644
--- a/QcomModulePkg/Library/avb/libavb/avb_slot_verify.c
+++ b/QcomModulePkg/Library/avb/libavb/avb_slot_verify.c
@@ -384,7 +384,7 @@ static AvbSlotVerifyResult load_and_verify_vbmeta(
size_t num_descriptors;
size_t n;
bool is_main_vbmeta;
- bool is_vbmeta_partition;
+ bool look_for_vbmeta_footer;
AvbVBMetaData* vbmeta_image_data = NULL;
ret = AVB_SLOT_VERIFY_RESULT_OK;
@@ -399,7 +399,14 @@ static AvbSlotVerifyResult load_and_verify_vbmeta(
* vbmeta struct.
*/
is_main_vbmeta = (rollback_index_location == 0);
- is_vbmeta_partition = (avb_strcmp(partition_name, "vbmeta") == 0);
+
+ /* Don't use footers for vbmeta partitions ('vbmeta' or
+ * 'vbmeta_<partition_name>').
+ */
+ look_for_vbmeta_footer = true;
+ if (Avb_StrnCmp(partition_name, "vbmeta", avb_strlen("vbmeta")) == 0) {
+ look_for_vbmeta_footer = false;
+ }
if (!avb_validate_utf8((const uint8_t*)partition_name, partition_name_len)) {
avb_error("Partition name is not valid UTF-8.\n");
@@ -427,7 +434,7 @@ static AvbSlotVerifyResult load_and_verify_vbmeta(
*/
vbmeta_offset = 0;
vbmeta_size = VBMETA_MAX_SIZE;
- if (!is_vbmeta_partition) {
+ if (look_for_vbmeta_footer) {
uint8_t footer_buf[AVB_FOOTER_SIZE];
size_t footer_num_read;
AvbFooter footer;
@@ -495,7 +502,7 @@ static AvbSlotVerifyResult load_and_verify_vbmeta(
* go try to get it from the boot partition instead.
*/
if (is_main_vbmeta && io_ret == AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION &&
- is_vbmeta_partition) {
+ !look_for_vbmeta_footer) {
avb_debugv(full_partition_name,
": No such partition. Trying 'boot' instead.\n",
NULL);