int SS_IMGVerfiyPartition(ua_dataSS_t * ua_dataSS)
{
- FileInfo source_file;
int ulResult = S_SS_SUCCESS;
uint8_t source_sha1[SHA_DIGEST_SIZE];
uint8_t target_sha1[SHA_DIGEST_SIZE];
+ uint8_t calculated_sha1[SHA_DIGEST_SIZE];
size_t free_space = 0;
if (!(ua_dataSS && ua_dataSS->update_cfg && ua_dataSS->parti_info && ua_dataSS->parti_info->ua_blk_name)) {
return E_SS_FAILURE;
}
- source_file.size = ua_dataSS->update_cfg->soure_img_size;
- source_file.data = NULL;
- if (SS_LoadPartition(ua_dataSS->parti_info->ua_blk_name, &source_file) == 0) {
- if (memcmp(source_file.sha1, source_sha1, SHA_DIGEST_SIZE) == 0) {
- LOGL(LOG_SSENGINE, "SS_IMGVerfiyPartition - SHA matches with source [%s] \n",
- ua_dataSS->parti_info->ua_blk_name);
- } else { // Need not compare with Target sha as once upgraded, it should NOT verify same partition again.
- unsigned char actualShaBuffer[41] = { 0, };
- hex_digest(source_file.sha1, actualShaBuffer, SHA_DIGEST_SIZE);
- LOGE("SS_IMGVerfiyPartition - SHA mismatch with SRC [%s] Expected [%s] Actual [%s]\n",
- ua_dataSS->parti_info->ua_blk_name, ua_dataSS->update_cfg->soure_sha1, actualShaBuffer);
- SS_SetUpgradeState(E_SS_IMGSRCCURRUPTED);
- ulResult = E_SS_FAILURE;
- }
+ SS_CalculateFileSha(ua_dataSS->parti_info->ua_blk_name, ua_dataSS->update_cfg->soure_img_size, calculated_sha1);
+ if (memcmp(calculated_sha1, source_sha1, SHA_DIGEST_SIZE) == 0) {
+ LOGL(LOG_SSENGINE, "SS_IMGVerfiyPartition - SHA matches with source [%s] \n",
+ ua_dataSS->parti_info->ua_blk_name);
+ } else { // Need not compare with Target sha as once upgraded, it should NOT verify same partition again.
+ unsigned char actualShaBuffer[41] = { 0, };
+ hex_digest(calculated_sha1, actualShaBuffer, SHA_DIGEST_SIZE);
+ LOGE("SS_IMGVerfiyPartition - SHA mismatch with SRC [%s] Expected [%s] Actual [%s]\n",
+ ua_dataSS->parti_info->ua_blk_name, ua_dataSS->update_cfg->soure_sha1, actualShaBuffer);
+ SS_SetUpgradeState(E_SS_IMGSRCCURRUPTED);
+ ulResult = E_SS_FAILURE;
}
- SS_Free(source_file.data);
if (ulResult == S_SS_SUCCESS) {
if (ua_dataSS->ui_progress)
ua_dataSS->ui_progress(ua_dataSS, 100);