Modify to check parameter and return value 87/145587/2
authorJiyong Min <jiyong.min@samsung.com>
Wed, 23 Aug 2017 04:24:20 +0000 (13:24 +0900)
committerJiyong Min <jiyong.min@samsung.com>
Wed, 23 Aug 2017 04:51:36 +0000 (13:51 +0900)
Change-Id: I9c92d4406b2e1006d914463a05d2b54bf9c61e89
Signed-off-by: Jiyong Min <jiyong.min@samsung.com>
gif/mm_util_gif.c
packaging/libmm-utility.spec

index d5ce592..4d82812 100755 (executable)
@@ -1011,10 +1011,10 @@ int mm_util_gif_image_set_position(mm_gif_image_h gif_image_h, const int left, c
        gif_image_s *gif_image = (gif_image_s *)gif_image_h;
 
        mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(left < 0 || top < 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(width <= 0 || height <= 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(left + width > gif_image->width, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(top + height > gif_image->height, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if((left < 0) || (top < 0), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if((width <= 0) || (height <= 0), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if((gif_image->width > 0) && (left + width > gif_image->width), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if((gif_image->height > 0) && (top + height > gif_image->height), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
        mm_util_info("%s l = %d, t = %d, w= %d, h = %d", __func__, left, top, width, height);
 
@@ -1044,7 +1044,7 @@ int mm_util_gif_image_set_delay_time(mm_gif_image_h gif_image_h, const int delay
        gif_image_s *gif_image = (gif_image_s *)gif_image_h;
 
        mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(delay_time == 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if(delay_time < 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
        mm_util_info("%s mode = %d", __func__, delay_time);
 
@@ -1184,8 +1184,8 @@ int mm_util_gif_encode_set_resolution(mm_gif_file_h gif_file_h, const int width,
        gif_file_s *gif_file = (gif_file_s *)gif_file_h;
 
        mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(width == 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(height == 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if(width <= 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if(height <= 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
        mm_util_retvm_if(gif_file->is_started, MM_UTIL_ERROR_INVALID_OPERATION, "Encoding has already started");
 
        mm_util_info("%s w = %d, h = %d", __func__, width, height);
@@ -1287,10 +1287,15 @@ int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_gif_image_h gif_im
        mm_util_fenter();
        mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
        mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if((gif_image->image_desc.Width <= 0) || (gif_image->image_desc.Height <= 0), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if((gif_image->image_desc.Left + gif_image->image_desc.Width > gif_file->width), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if((gif_image->image_desc.Top + gif_image->image_desc.Height > gif_file->height), MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
+       mm_util_retvm_if(gif_image->image_data == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
        if (gif_file->is_started == FALSE) {
-               mm_util_info("first added image, mm_util_gif_encode_start is needed");
-               mm_util_gif_encode_start(gif_file_h);
+               mm_util_warn("first added image, mm_util_gif_encode_start is needed");
+               ret = mm_util_gif_encode_start(gif_file_h);
+               mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_start failed");
        }
 
        /* Make local color map */
@@ -1327,7 +1332,8 @@ int mm_util_gif_encode_save(mm_gif_file_h gif_file_h)
        gif_file_s *gif_file = (gif_file_s *)gif_file_h;
 
        mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
-       mm_util_retvm_if(!gif_file->is_started, MM_UTIL_ERROR_INVALID_OPERATION, "Encoding has not started");
+       mm_util_retvm_if(gif_file->is_started == FALSE, MM_UTIL_ERROR_INVALID_OPERATION, "Encoding has not started");
+       mm_util_retvm_if(gif_file->GifFile->ImageCount <= 0, MM_UTIL_ERROR_INVALID_OPERATION, "No frame has encoded");
 
        mm_util_fenter();
 
index 8d8998f..290ada5 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-utility
 Summary:    Multimedia Framework Utility Library
-Version:    0.37
+Version:    0.38
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0