Fix svace issue 59/142159/2
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 3 Aug 2017 02:08:02 +0000 (11:08 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Thu, 3 Aug 2017 23:46:07 +0000 (08:46 +0900)
Change-Id: I00993efbc7240392686818ff391a4488c913563f
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
libdcm-util/dcm_image_codec.c

index 852e521b9a00b4ad33e7ea8066668695610ba192..6ceaea1f532d209d3e19bb052de5bf8efa48f9bc 100755 (executable)
@@ -220,6 +220,7 @@ int dcm_decode_image(const char *file_path, const dcm_image_format_e format,
        ret = image_util_decode_set_input_path(handle, file_path);
        if (ret != IMAGE_UTIL_ERROR_NONE) {
                dcm_error("Error image_util_decode_set_input_path ret : %d", ret);
+               image_util_decode_destroy(handle);
                return MS_MEDIA_ERR_INTERNAL;
        }
 
@@ -234,11 +235,13 @@ int dcm_decode_image(const char *file_path, const dcm_image_format_e format,
                        colorspace = IMAGE_UTIL_COLORSPACE_RGBA8888;
                        mm_format = MM_UTIL_IMG_FMT_RGBA8888;
                } else {
+                       image_util_decode_destroy(handle);
                        return MS_MEDIA_ERR_UNSUPPORTED_CONTENT;
                }
                ret = image_util_decode_set_colorspace(handle, colorspace);
                if (ret != IMAGE_UTIL_ERROR_NONE) {
                        dcm_error("Error image_util_decode_set_colorspace ret : %d", ret);
+                       image_util_decode_destroy(handle);
                        return MS_MEDIA_ERR_INTERNAL;
                }
        }
@@ -246,12 +249,14 @@ int dcm_decode_image(const char *file_path, const dcm_image_format_e format,
        ret = image_util_decode_set_output_buffer(handle, &decode_buffer);
        if (ret != IMAGE_UTIL_ERROR_NONE) {
                dcm_error("Error image_util_decode_set_output_buffer ret : %d", ret);
+               image_util_decode_destroy(handle);
                return MS_MEDIA_ERR_INTERNAL;
        }
 
        ret = image_util_decode_run(handle, (unsigned long *)&decode_width, (unsigned long *)&decode_height, size);
        if (ret != IMAGE_UTIL_ERROR_NONE) {
                dcm_error("Error image_util_decode_run ret : %d", ret);
+               image_util_decode_destroy(handle);
                return MS_MEDIA_ERR_INTERNAL;
        }
 
@@ -277,10 +282,21 @@ int dcm_decode_image(const char *file_path, const dcm_image_format_e format,
                        dcm_error("Failed to calculate image buffer size! err: %d", ret);
                        return MS_MEDIA_ERR_INTERNAL;
                }
+
                *size = buffer_size;
                resize_buffer = (unsigned char *)malloc(sizeof(unsigned char) * (buffer_size));
-               if (resize_buffer != NULL)
-                       mm_util_resize_image(decode_buffer, decode_width, decode_height, mm_format, resize_buffer, buff_width, buff_height);
+               if (resize_buffer != NULL) {
+                       ret = mm_util_resize_image(decode_buffer, decode_width, decode_height, mm_format, resize_buffer, buff_width, buff_height);
+                       DCM_SAFE_FREE(decode_buffer);
+                       if (ret != MS_MEDIA_ERR_NONE) {
+                               dcm_error("Failed to mm_util_resize_image");
+                               DCM_SAFE_FREE(resize_buffer);
+                               return MS_MEDIA_ERR_INTERNAL;
+                       }
+               } else {
+                       dcm_error("Failed to allocation");
+                       return MS_MEDIA_ERR_OUT_OF_MEMORY;
+               }
        } else {
                resize_buffer = decode_buffer;
        }
@@ -294,6 +310,7 @@ int dcm_decode_image(const char *file_path, const dcm_image_format_e format,
                        *image_buffer = resize_buffer;
                } else {
                        ret = __dcm_rotate_image(resize_buffer, format, orientation, image_buffer, size, buff_width, buff_height);
+                       DCM_SAFE_FREE(resize_buffer);
                }
                if (ret != MS_MEDIA_ERR_NONE) {
                        dcm_error("Failed to rotate image buffer! err: %d", ret);