Bug fix of realpath check. File does not exist for some case. so apply realpath only... 24/164224/2 accepted/tizen/unified/20171229.070222 submit/tizen/20171227.043416
authorhj kim <backto.kim@samsung.com>
Mon, 18 Dec 2017 06:37:18 +0000 (15:37 +0900)
committerhj kim <backto.kim@samsung.com>
Mon, 18 Dec 2017 06:49:07 +0000 (15:49 +0900)
Change-Id: I53ab9908425d750a75fca0c76cc081b4d53e671f

jpeg/mm_util_jpeg.c
packaging/libmm-utility.spec
png/mm_util_png.c

index 9a7e028..213c5b9 100755 (executable)
@@ -478,26 +478,35 @@ static int __mm_image_encode_to_jpeg_file_with_libjpeg(const char *pFileName, vo
 
        jpeg_create_compress(&cinfo);
 
-       realPATH = realpath(pFileName, NULL);
-       if (realPATH == NULL) {
-               mm_util_error("realpath failed");
-               return MM_UTIL_ERROR_NO_SUCH_FILE;
-       }
-       if (!strncmp(pFileName, realPATH, strlen(pFileName))) {
-               if ((fpWriter = fopen(pFileName, "wb")) == NULL) {
-                       mm_util_error("[infile] file open [%s] failed", pFileName);
-                       mm_util_stderror("file open failed");
+       if (g_file_test(pFileName, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+               realPATH = realpath(pFileName, NULL);
+               if (realPATH == NULL) {
+                       mm_util_error("realpath failed [%s]", pFileName);
+                       mm_util_stderror("realpath failed");
+                       return MM_UTIL_ERROR_NO_SUCH_FILE;
+               }
+               if (!strncmp(pFileName, realPATH, strlen(pFileName))) {
+                       if ((fpWriter = fopen(pFileName, "wb")) == NULL) {
+                               mm_util_error("[infile] file open [%s] failed", pFileName);
+                               mm_util_stderror("file open failed");
+                               MMUTIL_SAFE_FREE(realPATH);
+                               return MM_UTIL_ERROR_INVALID_OPERATION;
+                       }
+               } else {
+                       mm_util_error("[infile] file [%s] is symlink", pFileName);
                        MMUTIL_SAFE_FREE(realPATH);
                        return MM_UTIL_ERROR_NO_SUCH_FILE;
                }
-       } else {
-               mm_util_error("[infile] file [%s] is symlink", pFileName);
+
                MMUTIL_SAFE_FREE(realPATH);
-               return MM_UTIL_ERROR_NO_SUCH_FILE;
+       } else {
+               if ((fpWriter = fopen(pFileName, "wb")) == NULL) {
+                       mm_util_error("[infile] file open [%s] failed", pFileName);
+                       mm_util_stderror("file open failed");
+                       return MM_UTIL_ERROR_INVALID_OPERATION;
+               }
        }
 
-       MMUTIL_SAFE_FREE(realPATH);
-
        jpeg_stdio_dest(&cinfo, fpWriter);
        cinfo.image_width = width;
        cinfo.image_height = height;
index 3ea8832..56247f7 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-utility
 Summary:    Multimedia Framework Utility Library
-Version:    0.1.3
+Version:    0.1.4
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index 9f08ca8..518df5b 100755 (executable)
@@ -484,24 +484,33 @@ int mm_util_encode_to_png_file(void **data, mm_util_png_data *encoded, const cha
                return MM_UTIL_ERROR_NO_SUCH_FILE;
        }
 
-       realPATH = realpath(fpath, NULL);
-       if (realPATH == NULL) {
-               mm_util_error("realpath failed");
-               return MM_UTIL_ERROR_NO_SUCH_FILE;
-       }
+       if (g_file_test(fpath, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+               realPATH = realpath(fpath, NULL);
+               if (realPATH == NULL) {
+                       mm_util_error("realpath failed [%s]", fpath);
+                       mm_util_stderror("realpath failed");
+                       return MM_UTIL_ERROR_NO_SUCH_FILE;
+               }
 
-       if (!strncmp(fpath, realPATH, strlen(fpath))) {
-               if ((fp = fopen(fpath, "w")) == NULL) {
-                       mm_util_stderror("file open failed");
+               if (!strncmp(fpath, realPATH, strlen(fpath))) {
+                       if ((fp = fopen(fpath, "w")) == NULL) {
+                               mm_util_stderror("file open failed");
+                               MMUTIL_SAFE_FREE(realPATH);
+                               return MM_UTIL_ERROR_INVALID_OPERATION;
+                       }
+               } else {
+                       mm_util_error("file is symbolic link");
                        MMUTIL_SAFE_FREE(realPATH);
                        return MM_UTIL_ERROR_NO_SUCH_FILE;
                }
-       } else {
-               mm_util_error("file is symbolic link");
                MMUTIL_SAFE_FREE(realPATH);
-               return MM_UTIL_ERROR_NO_SUCH_FILE;
+       } else {
+               if ((fp = fopen(fpath, "w")) == NULL) {
+                       mm_util_error("[infile] file open [%s] failed", fpath);
+                       mm_util_stderror("file open failed");
+                       return MM_UTIL_ERROR_INVALID_OPERATION;
+               }
        }
-       MMUTIL_SAFE_FREE(realPATH);
 
        ret = write_png(data, encoded, fp);