[0.6.74] apply max limit of string tag 61/156361/2
authorEunhae Choi <eunhae1.choi@samsung.com>
Wed, 18 Oct 2017 07:09:17 +0000 (16:09 +0900)
committerEunhae Choi <eunhae1.choi@samsung.com>
Wed, 18 Oct 2017 07:10:51 +0000 (16:10 +0900)
Issue: mp3 playbcak issue which has long string tag. (reported from MCD)
Solution : set the limit of string tag to 4000bytes not to exceed mem size.

Change-Id: If96ed34ef415f10e653fe16db76acaa2d131b127

packaging/libmm-player.spec
src/include/mm_player_priv.h
src/mm_player_priv.c

index 757f39159ad4b064d616b088a18b1715cab22ea0..d7ac5fdf8dd62dc150b21b77406c3bb70802bc41 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.73
+Version:    0.6.74
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 51aafe81274f2bd6f7fdae74301846572f5dc001..0cec7d9c4ebeb01d144b43ad462b9bc53be24e1e 100644 (file)
  */
 #define MM_PLAYER_GET_ATTRS(x_player)  (MM_PLAYER_CAST(x_player)->attrs)
 
-#define ROTATION_USING_SINK    0
-#define ROTATION_USING_CUSTOM  1
-#define ROTATION_USING_FLIP    2
+#define ROTATION_USING_SINK     0
+#define ROTATION_USING_CUSTOM   1
+#define ROTATION_USING_FLIP     2
+
+#define MM_MAX_STRING_LENGTH    4000 /* have to be less than MUSE_MSG_MAX_LENGTH */
 
 /*---------------------------------------------------------------------------
 |    GLOBAL CONSTANT DEFINITIONS:                                                                                      |
index 57b1a036bb5bcd9a8c83f933e6d806f806ec2154..5f88ba9336ec811d375944d62960df0b5c003100 100644 (file)
@@ -1797,11 +1797,20 @@ __mmplayer_gst_extract_tag_from_msg(mm_player_t* player, GstMessage* msg)
 /* macro for better code readability */
 #define MMPLAYER_UPDATE_TAG_STRING(gsttag, attribute, playertag) \
 if (gst_tag_list_get_string(tag_list, gsttag, &string)) {\
-       if (string != NULL) {\
-               SECURE_LOGD("update tag string : %s\n", string); \
-               mm_attrs_set_string_by_name(attribute, playertag, string); \
-               g_free(string);\
-               string = NULL;\
+       if (string != NULL) { \
+               SECURE_LOGD("%d update tag string : %s\n", strlen(string), string); \
+               if (strlen(string) > MM_MAX_STRING_LENGTH) { \
+                       char *new_string = malloc(MM_MAX_STRING_LENGTH); \
+                       strncpy(new_string, string, MM_MAX_STRING_LENGTH-1); \
+                       new_string[MM_MAX_STRING_LENGTH-1] = '\0'; \
+                       mm_attrs_set_string_by_name(attribute, playertag, new_string); \
+                       g_free(new_string); \
+                       new_string = NULL; \
+               } else { \
+                       mm_attrs_set_string_by_name(attribute, playertag, string); \
+               } \
+               g_free(string); \
+               string = NULL; \
        } \
 }