Fix vulnerabilities 17/182217/2 accepted/tizen/4.0/unified/20180621.141504 submit/tizen_4.0/20180621.085902
authorSunmin Lee <sunm.lee@samsung.com>
Thu, 21 Jun 2018 08:36:08 +0000 (17:36 +0900)
committerSunmin Lee <sunm.lee@samsung.com>
Thu, 21 Jun 2018 08:39:57 +0000 (17:39 +0900)
- Handle fopen error cases
- Use strerror_r rather than sterror

Change-Id: Ia427630430061a83b7e6ad5383d5ebace1cf587e
Signed-off-by: Sunmin Lee <sunm.lee@samsung.com>
ss_engine/SS_PatchDelta.c
ss_engine/SS_UPI.c

index 123cddb9ddb04a1ab75dfa3f330dca9c0329a478..6d8c056301183f4b6051d41a7f73280458eaa3f0 100755 (executable)
@@ -677,6 +677,11 @@ int SS_UpdateDeltaKernel(ua_dataSS_t * ua_dataSS, int (*write_to_blkdev) (char *
                                 file_name);
                snprintf(part_filename, sizeof(part_filename) - 1, "%s/%s", SS_KERNEL_WORKSPACE, file_name);
                wp = fopen(part_filename, "w");
+               if (wp == NULL) {
+                       LOGE("Failed to open %s\n", part_filename);
+                       result = E_SS_FAILURE;
+                       goto Cleanup;
+               }
                while (j-- > 0) {
                        a = fgetc(fp);
                        fputc(a, wp);
@@ -741,10 +746,21 @@ int SS_UpdateDeltaKernel(ua_dataSS_t * ua_dataSS, int (*write_to_blkdev) (char *
        //open new kernel file and append kernel parts to it in
        snprintf(source_filename, sizeof(source_filename) - 1, "%s/%s", SS_KERNEL_WORKSPACE, SS_KERNEL_TARGET_NAME);
        kp = fopen(source_filename, "w");
+       if (kp == NULL) {
+               LOGE("Failed to open %s\n", source_filename);
+               result = E_SS_FAILURE;
+               goto Cleanup;
+       }
        for (i = 0; i < 4; i++) {
                snprintf(part_filename, sizeof(part_filename) - 1, "%s/%s/%s", SS_KERNEL_WORKSPACE, SS_KERNEL_UNPACK_DIR,
                                 kernel_parts[i]);
                wp = fopen(part_filename, "r");
+               if (wp == NULL) {
+                       LOGE("Failed to open %s\n", part_filename);
+                       result = E_SS_FAILURE;
+                       fclose(kp);
+                       goto Cleanup;
+               }
                fseek(wp, SEEK_SET, SEEK_END);
                j = ftell(wp);
                fseek(wp, SEEK_SET, SEEK_SET);
index 43828b50102593263556a95fac3a7b7b8209a140..6a6a57e9dbd673e9c136e9ad2eac5bbdd270427a 100755 (executable)
@@ -2330,10 +2330,12 @@ int SS_IMGUpdatemain(ua_dataSS_t * ua_dataSS, int update_type)  //SS_FSUpdatePar
 
                FILE *fp = NULL;
                char buf[14] = { 0, };  //to store zImage-delta magic keyword
+               char err_buf[256];
                ssize_t bytes_read;
                fp = fopen(SS_PATCHFILE_SOURCE, "r");
                if (fp == NULL) {
-                       LOGE("Failed to open patch file Error:[%s]\n", strerror(errno));
+                       strerror_r(errno, err_buf, sizeof(err_buf));
+                       LOGE("Failed to open patch file Error:[%s]\n", err_buf);
                        SS_SetUpgradeState(E_SS_FSFAILEDTOOPENPATCHINFO);
                        return E_SS_FAILURE;
                }