upgrade-apply-deltafs: Change new files archive offset logic 60/285060/5
authorAntoni Adaszkiewicz <a.adaszkiewi@samsung.com>
Mon, 5 Dec 2022 14:12:12 +0000 (15:12 +0100)
committerAntoni Adaszkiewicz <a.adaszkiewi@samsung.com>
Wed, 14 Dec 2022 13:51:19 +0000 (14:51 +0100)
Now offset of "system.7z" archive (relative to delta) will be set to -1
if it is not found in delta. This allows said offset to be 0 and be
considered correcct (even though this cannot happen currently as there
are always crucial files at the begining of a delta).

Change-Id: I5faba74558e120eea6bec9d76ad1ce152e46f927

src/upgrade-apply-deltafs/engine/SS_UPI.c
src/upgrade-apply-deltafs/engine/fota_tar.c
src/upgrade-apply-deltafs/ua.c

index 80a2297..9ea2c40 100755 (executable)
@@ -678,7 +678,7 @@ HARD:NEW:system/lib/firmware/vbc_eq:/opt/system/vbc_eq
        if (local && (local->news) > 0) {   //check if new files archive is present in the delta
                char new_patch_path[MAX_FILE_PATH] = { 0, };
                snprintf(new_patch_path, MAX_FILE_PATH, "%s%s", ua_dataSS->parti_info->ua_subject_name, SS_COMPRESSED_FILE);
-               if (ua_dataSS->tar_data->new_files_info.offset <= 0) {
+               if (ua_dataSS->tar_data->new_files_info.offset < 0) {
                        SS_SetUpgradeState(E_SS_FSFAILEDTOPARSEDELTAINFO);
                        LOGE("New files not present in Patch and they should be\n");
                        retval = E_SS_FAILURE;
@@ -1288,7 +1288,7 @@ int SS_FSUpdateFile(int ubFileType, ua_dataSS_t * ua_dataSS, int ulPatchCount, f
                {
                        LOGL(LOG_SSENGINE, "NEWFILES mode start\n");
                        LOGL(LOG_SSENGINE, "Starting New file upgrade for   [%s]\n", patch_path);
-                       if (ua_dataSS->tar_data->new_files_info.offset > 0) {
+                       if (ua_dataSS->tar_data->new_files_info.offset >= 0) {
                                if (tar_extract_7z_file(ua_dataSS->tar_data) < 0) {
                                        LOGE("newfiles extraction error!\n");
                                        ulResult = E_SS_FAILURE;
index 2f8fef9..9452fd9 100755 (executable)
@@ -192,7 +192,7 @@ static int tar_reset_to_subject(TAR *tar, char *subject_name, off_t *offset)
 static int tar_verify_and_extract_text(tar_info *tar_data, char *pathname, off_t last_seek)
 {
        if (strcmp(tar_data->new_files_info.item_name, pathname) == 0) {
-               if (tar_data->new_files_info.offset > 0) {
+               if (tar_data->new_files_info.offset >= 0) {
                        LOGE("Dupicate file found in delta!\n");
                        return -1;
                }
index 218f3a4..763a40f 100755 (executable)
@@ -674,7 +674,7 @@ void set_tar_info(TAR *tar)
        s_tar_data.subject_offset = 0;
        s_tar_data.uncompressed_folder_size = 0;
 
-       s_new_files_info.offset = 0;
+       s_new_files_info.offset = -1;
        snprintf(s_new_files_info.item_name,  MAX_FILE_PATH, "%s%s",  s_tar_data.subject_name, SS_NEW_COMPRESSED_FILE);
        snprintf(s_new_files_info.extracted_name, MAX_FILE_PATH, "%s/%s",  s_update_data.ua_delta_folder, SS_NEW_COMPRESSED_FILE);