From a0cf8bcb473f1789fe639ee4efcfb25cb2fd9a7f Mon Sep 17 00:00:00 2001 From: Tommy Chiu Date: Fri, 27 Jun 2025 20:10:47 +0800 Subject: [PATCH] [manuf] Restore the num_objs for perso_blob_from_host num_objs will be updated during personalize_endorse_certificates() which leads to personalize_extension_post_cert_endorse() gets incorrect value. Signed-off-by: Tommy Chiu (cherry picked from commit 4d5e43ea7f8b7c1e6dee57ac5dbed45001924516) --- sw/device/silicon_creator/manuf/base/ft_personalize.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sw/device/silicon_creator/manuf/base/ft_personalize.c b/sw/device/silicon_creator/manuf/base/ft_personalize.c index d918cabaadcfe..cf14ecca889d3 100644 --- a/sw/device/silicon_creator/manuf/base/ft_personalize.c +++ b/sw/device/silicon_creator/manuf/base/ft_personalize.c @@ -880,6 +880,7 @@ static status_t write_cert_to_flash_info_page( return OK_STATUS(); } +size_t orig_num_objects_from_host; static status_t personalize_endorse_certificates(ujson_t *uj) { /***************************************************************************** * Certificate Export and Endorsement. @@ -950,6 +951,7 @@ static status_t personalize_endorse_certificates(ujson_t *uj) { free_room -= block.obj_size; } + orig_num_objects_from_host = perso_blob_from_host.num_objs; // Extract the remaining cert perso LTV objects received from the host. while (perso_blob_from_host.num_objs) TRY(extract_next_cert(&next_cert, &free_room)); @@ -1131,6 +1133,7 @@ static status_t provision(ujson_t *uj) { .uj = uj, .perso_blob_from_host = &perso_blob_from_host, .cert_flash_layout = cert_flash_layout}; + post_endorse.perso_blob_from_host->num_objs = orig_num_objects_from_host; TRY(personalize_extension_post_cert_endorse(&post_endorse)); // Check the hash of all perso objects with the host to confirm integrity of