diff options
author | Hwankyu Jhun <h.jhun@samsung.com> | 2018-09-12 12:06:23 +0900 |
---|---|---|
committer | Hwankyu Jhun <h.jhun@samsung.com> | 2018-09-12 12:06:23 +0900 |
commit | 71144b90a78acd2ff44a14029e08560c27cea475 (patch) | |
tree | 4db4a20d72132637cb31b0a75b3f9d3e52944954 | |
parent | ba7267cde238200adbde51a8e45da8ec47386af4 (diff) | |
download | mime-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-x | src/mime_type.c | 13 |
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++; } } |