Fix crash issue (audio/video codec) 36/212336/2 accepted/tizen/unified/20190820.233458 submit/tizen/20190820.091229
authorMinje Ahn <minje.ahn@samsung.com>
Tue, 20 Aug 2019 09:03:03 +0000 (18:03 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Tue, 20 Aug 2019 09:06:25 +0000 (18:06 +0900)
The audio/video codec value of some media returns -1

Change-Id: I6d14089ee8f77f52f71a533030c857bfb4809303
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
packaging/capi-media-metadata-extractor.spec
src/metadata_extractor.c

index 3af438f..218bf54 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-metadata-extractor
 Summary:    A media metadata extractor library in Tizen Native API
-Version: 0.1.12
+Version: 0.1.13
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index 765b7f5..0b38e39 100644 (file)
@@ -425,8 +425,8 @@ static int __metadata_extractor_get_audio_codec(metadata_extractor_s *metadata,
        ret = __metadata_extractor_get_audio_attr_int(metadata, MM_FILE_CONTENT_AUDIO_CODEC, &audio_codec_idx);
        metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "Fail to get codec idx");
 
-       if (audio_codec_idx < audio_codec_cnt)
-               *audio_codec = strdup(AudioCodecTypeString[audio_codec_idx]);
+       if (audio_codec_idx >= 0 && audio_codec_idx < audio_codec_cnt)
+               *audio_codec = g_strdup(AudioCodecTypeString[audio_codec_idx]);
        else {
                metadata_extractor_error("Invalid Audio Codec [%d]", audio_codec_idx);
                *audio_codec = NULL;
@@ -452,8 +452,8 @@ static int __metadata_extractor_get_video_codec(metadata_extractor_s *metadata,
        ret = __metadata_extractor_get_video_attr_int(metadata, MM_FILE_CONTENT_AUDIO_CODEC, &video_codec_idx);
        metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "Fail to get codec idx");
 
-       if (video_codec_idx < video_codec_cnt)
-               *video_codec = strdup(VideoCodecTypeString[video_codec_idx]);
+       if (video_codec_idx >= 0 && video_codec_idx < video_codec_cnt)
+               *video_codec = g_strdup(VideoCodecTypeString[video_codec_idx]);
        else {
                metadata_extractor_error("Invalid Video Codec[%d]", video_codec_idx);
                *video_codec = NULL;
@@ -521,7 +521,7 @@ int metadata_extractor_set_path(metadata_extractor_h metadata, const char *path)
                _metadata->tag_h = 0;
        }
 
-       _metadata->path = strdup(path);
+       _metadata->path = g_strdup(path);
        metadata_extractor_retvm_if(_metadata->path == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
 
        return ret;
@@ -585,7 +585,7 @@ int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index,
                metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, "Internal operation error");
 
                if ((_lyrics != NULL) && (strlen(_lyrics) > 0)) {
-                       *lyrics = strdup(_lyrics);
+                       *lyrics = g_strdup(_lyrics);
                        metadata_extractor_retvm_if(*lyrics == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
                } else
                        *lyrics = NULL;
@@ -978,7 +978,7 @@ int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extr
 
        if (is_string) {
                if ((s_value != NULL) && (strlen(s_value) > 0)) {
-                       *value = strdup(s_value);
+                       *value = g_strdup(s_value);
                        /*Only use strdup in video_codec and audio_codec */
                        if (attribute == METADATA_VIDEO_CODEC || attribute == METADATA_AUDIO_CODEC)
                                SAFE_FREE(s_value);
@@ -1000,7 +1000,7 @@ int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extr
                else
                        snprintf(extracted_metadata, sizeof(extracted_metadata), "%d", i_value);
 
-               *value = strdup(extracted_metadata);
+               *value = g_strdup(extracted_metadata);
                metadata_extractor_retvm_if(*value == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
        }
 
@@ -1041,7 +1041,7 @@ int metadata_extractor_get_artwork(metadata_extractor_h metadata, void **artwork
                }
 
                if ((_artwork_mime != NULL) && (strlen(_artwork_mime) > 0)) {
-                       *mime_type = strdup(_artwork_mime);
+                       *mime_type = g_strdup(_artwork_mime);
                        metadata_extractor_retvm_if(*mime_type == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
                } else {
                        *mime_type = NULL;