diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2019-10-10 20:41:24 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2019-10-10 20:41:24 -0700 |
commit | 1457f1765707e2b7290a228f03b97dbae7ef4d2d (patch) | |
tree | 7b80a139ecec320529e84cdde10ccd06ff2fbe9f | |
parent | 39a2d85fdbed66deb6a8aabbe482c645c7cd18be (diff) | |
parent | 84a07bbd2f7e0d5c7b906a74b006c17cf05f931c (diff) |
Merge 84a07bbd2f7e0d5c7b906a74b006c17cf05f931c on remote branch
Change-Id: I7427f32b145162f16b9bae11bc51f1a56f1933aa
-rw-r--r-- | QcomModulePkg/Library/avb/libavb/avb_slot_verify.c | 15 |
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); |