Add an exception handling about out of memory 32/188932/1
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 12 Sep 2018 03:06:23 +0000 (12:06 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 12 Sep 2018 03:06:23 +0000 (12:06 +0900)
Change-Id: Ie866d4c4ba7d9cdf425379d443c07a7179b76812
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/mime_type.c

index 296ba6d..071ca33 100755 (executable)
@@ -100,6 +100,8 @@ int mime_type_get_file_extension(const char *mime_type, char ***file_extension,
        int xdg_file_extension_length = 0;
        char **file_extension_array = NULL;
        int file_extension_array_index = 0;
+       char *entry;
+       int i;
 
        if (mime_type == NULL || file_extension == NULL || length == NULL)
                return mime_type_error(MIME_TYPE_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
@@ -121,13 +123,18 @@ int mime_type_get_file_extension(const char *mime_type, char ***file_extension,
                return mime_type_error(MIME_TYPE_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
 
        for (xdg_file_extension_length = 0; xdg_file_extension[xdg_file_extension_length] != NULL; xdg_file_extension_length++) {
-               char *entry = NULL;
-
                entry = strrchr(xdg_file_extension[xdg_file_extension_length], FILE_EXTENSION_DELIMITER);
-
                if (entry != NULL) {
                        entry++;
                        file_extension_array[file_extension_array_index] = strdup(entry);
+                       if (!file_extension_array[file_extension_array_index]) {
+                               for (i = file_extension_array_index; i >= 0; i--) {
+                                       if (file_extension_array[i])
+                                               free(file_extension_array[i]);
+                               }
+                               free(file_extension_array);
+                               return mime_type_error(MIME_TYPE_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
+                       }
                        file_extension_array_index++;
                }
        }