summaryrefslogtreecommitdiff
path: root/QcomModulePkg/Library/avb/libavb/avb_slot_verify.c
diff options
context:
space:
mode:
Diffstat (limited to 'QcomModulePkg/Library/avb/libavb/avb_slot_verify.c')
-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);