Add partition patching validation 86/270886/4
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Thu, 3 Feb 2022 12:15:07 +0000 (13:15 +0100)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Mon, 21 Feb 2022 14:59:47 +0000 (15:59 +0100)
Change-Id: I50beec2214e7e606741eb740dc3421e3b5fb259d

ss_engine/SS_PatchDelta.c

index 2c85344288d48d1b305517fff5c59108f66ed254..f3d6a5fc74ab1f3606501c59654568a39576bfff 100755 (executable)
@@ -1011,6 +1011,7 @@ int SS_UpdateDeltaIMGAB(ua_dataSS_t * ua_dataSS, int (*write_to_blkdev) (char *,
                return S_SS_SUCCESS;
        }
 
+       LOGL(LOG_SSENGINE, "SS_UpdateDeltaIMGAB - Checksum calculation of the source partition\n");
        SS_CalculateFileSha(ua_dataSS->parti_info->ua_blk_name_previous,
                            ua_dataSS->update_cfg->soure_img_size,
                            current_target_sha1);
@@ -1023,11 +1024,25 @@ int SS_UpdateDeltaIMGAB(ua_dataSS_t * ua_dataSS, int (*write_to_blkdev) (char *,
                return E_SS_FAILURE;
        }
 
+       LOGL(LOG_SSENGINE, "SS_UpdateDeltaIMGAB - Applying the patch\n");
        apply_patch_brotli(ua_dataSS->parti_info->ua_blk_name_previous,
                           ua_dataSS->update_cfg->soure_img_size,
                           ua_dataSS->parti_info->ua_blk_name,
                           ua_dataSS->update_cfg->target_img_size,
                           SS_PATCHFILE_SOURCE);
 
+       LOGL(LOG_SSENGINE, "SS_UpdateDeltaIMGAB - Checksum calculation of the target partition\n");
+       SS_CalculateFileSha(ua_dataSS->parti_info->ua_blk_name,
+                           ua_dataSS->update_cfg->target_img_size,
+                           current_target_sha1);
+
+       if (memcmp(target_sha1, current_target_sha1, SHA_DIGEST_SIZE) != 0) {
+               unsigned char actualShaBuffer[41] = { 0, };
+               hex_digest(current_target_sha1, actualShaBuffer, SHA_DIGEST_SIZE);
+               LOGL(LOG_SSENGINE, "SS_UpdateDeltaIMGAB - Target partition was corrupted. SRC: [%s] Expected [%s] Actual [%s]\n",
+                    ua_dataSS->parti_info->ua_blk_name, ua_dataSS->update_cfg->target_sha1, actualShaBuffer);
+               return E_SS_FAILURE;
+       }
+
        return result;
 }