summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHwankyu Jhun <h.jhun@samsung.com>2018-09-12 12:06:23 +0900
committerHwankyu Jhun <h.jhun@samsung.com>2018-09-12 12:06:23 +0900
commit71144b90a78acd2ff44a14029e08560c27cea475 (patch)
tree4db4a20d72132637cb31b0a75b3f9d3e52944954
parentba7267cde238200adbde51a8e45da8ec47386af4 (diff)
downloadmime-type-71144b90a78acd2ff44a14029e08560c27cea475.tar.gz
mime-type-71144b90a78acd2ff44a14029e08560c27cea475.tar.bz2
mime-type-71144b90a78acd2ff44a14029e08560c27cea475.zip
Add an exception handling about out of memory
Change-Id: Ie866d4c4ba7d9cdf425379d443c07a7179b76812 Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rwxr-xr-xsrc/mime_type.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mime_type.c b/src/mime_type.c
index 296ba6d..071ca33 100755
--- a/src/mime_type.c
+++ b/src/mime_type.c
@@ -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++;
}
}