[0.6.214] fix svace issue 96/227496/2 accepted/tizen/5.5/unified/20200317.160219 submit/tizen_5.5/20200312.073513 submit/tizen_5.5/20200316.024312 submit/tizen_5.5/20200317.044613
authorEunhye Choi <eunhae1.choi@samsung.com>
Thu, 12 Mar 2020 07:12:31 +0000 (16:12 +0900)
committerEunhye Choi <eunhae1.choi@samsung.com>
Thu, 12 Mar 2020 07:14:01 +0000 (16:14 +0900)
- sync with tizen branch

Change-Id: I467219bc3f1b64b053bdbac3a245898a9eb1312d

packaging/libmm-player.spec
src/mm_player_ini.c
src/mm_player_priv.c

index 27b0e4db5f1b0d57f418fa19c6fe77524f54033c..c6775d67f160dab0fd8798ac25b465c3758890de 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.213
+Version:    0.6.214
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index b4a5101c807dbc9f95eb3c5dfd1c09d3cd88d2f1..1c130c446c053f274e7af7beb85a91fd963ac32b 100644 (file)
@@ -430,6 +430,7 @@ __get_element_list(mmplayer_ini_t *ini, gchar *str, int keyword_type)
        gchar **list = NULL;
        gchar **walk = NULL;
        gint i = 0;
+       gint size = PLAYER_INI_MAX_ELEMENT;
        gchar *strtmp = NULL;
        gchar (*ini_keyword)[PLAYER_INI_MAX_STRLEN] = {NULL, };
 
@@ -471,19 +472,22 @@ __get_element_list(mmplayer_ini_t *ini, gchar *str, int keyword_type)
                break;
        case KEYWORD_A_OFFLOAD_DEVICE_TYPE:
                ini_keyword = ini->audio_offload_device_type;
+               size = PLAYER_INI_MAX_DEVICE_TYPE;
                break;
        case KEYWORD_A_OFFLOAD_MEDIA_FORMAT:
                ini_keyword = ini->audio_offload_media_format;
+               size = PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT;
                break;
        case KEYWORD_MEDIA_STREAM_IN_FORMAT:
                ini_keyword = ini->media_stream_input_format;
+               size = PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT;
                break;
        default:
                goto EXIT;
                break;
        }
 
-       for (walk = list; *walk && ini_keyword[i]; walk++) {
+       for (walk = list; *walk && i < size; walk++) {
                strncpy(ini_keyword[i], *walk, (PLAYER_INI_MAX_STRLEN - 1));
                g_strstrip(ini_keyword[i]);
                ini_keyword[i][PLAYER_INI_MAX_STRLEN -1] = '\0';
@@ -491,7 +495,7 @@ __get_element_list(mmplayer_ini_t *ini, gchar *str, int keyword_type)
        }
 
        /* mark last item to NULL */
-       if (ini_keyword[i]) {
+       if (i < size) {
                ini_keyword[i][0] = '\0';
        } else {
                LOGE("too many keyword exist in list (%d)", i);
index 3f73038bc63372731266cdd4e03913101a9d8cc6..12c08887ed20da63cee3e74e01f982dc32259598 100644 (file)
@@ -6762,7 +6762,7 @@ __mmplayer_is_audio_offload_device_type(mmplayer_t *player)
 
        conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err);
        if (!conn || err) {
-               LOGE("failed g_bus_get_sync() (%s)", err ? err->message : NULL);
+               LOGE("failed g_bus_get_sync() (%s)", (err ? err->message : "null"));
                g_error_free(err);
                goto DONE;
        }
@@ -6779,7 +6779,7 @@ __mmplayer_is_audio_offload_device_type(mmplayer_t *player)
                                        NULL,
                                        &err);
        if (!result || err) {
-               LOGE("failed g_dbus_connection_call_sync() (%s)", err ? err->message : NULL);
+               LOGE("failed g_dbus_connection_call_sync() (%s)", (err ? err->message : "null"));
                g_error_free(err);
                goto DONE;
        }
@@ -7078,6 +7078,10 @@ _mmplayer_gst_decode_autoplug_sort(GstElement *bin,
                gchar (*sw_dec_info)[PLAYER_INI_MAX_STRLEN] = {NULL, };
 
                factory = g_value_get_object(g_value_array_get_nth(factories, i));
+               if (!factory) {
+                       LOGW("failed to get factory object");
+                       continue;
+               }
                klass = gst_element_factory_get_klass(factory);
                factory_name = GST_OBJECT_NAME(factory);
 
@@ -7127,7 +7131,7 @@ _mmplayer_gst_decode_autoplug_sort(GstElement *bin,
        if (codec_type == MM_PLAYER_CODEC_TYPE_HW) {
                if (hw_dec_idx < first_sw_dec_idx)
                        return NULL;
-               new_pos = first_sw_dec_idx - 1;
+               new_pos = first_sw_dec_idx;
                rm_pos = hw_dec_idx + 1;
        } else if (codec_type == MM_PLAYER_CODEC_TYPE_SW) {
                if (last_sw_dec_idx < hw_dec_idx)
@@ -7139,8 +7143,12 @@ _mmplayer_gst_decode_autoplug_sort(GstElement *bin,
        }
 
        /* change position - insert H/W decoder according to the new position */
-       new_factories = g_value_array_copy(factories);
        factory = g_value_get_object(g_value_array_get_nth(factories, hw_dec_idx));
+       if (!factory) {
+               LOGW("failed to get factory object");
+               return NULL;
+       }
+       new_factories = g_value_array_copy(factories);
        g_value_init (&val, G_TYPE_OBJECT);
        g_value_set_object (&val, factory);
        g_value_array_insert(new_factories, new_pos, &val);
@@ -7149,9 +7157,11 @@ _mmplayer_gst_decode_autoplug_sort(GstElement *bin,
 
        for (int i = 0 ; i < new_factories->n_values ; i++) {
                factory = g_value_get_object(g_value_array_get_nth(new_factories, i));
-
-               LOGD("[Re-arranged] Klass [%s] Factory [%s]",
-                       gst_element_factory_get_klass(factory), GST_OBJECT_NAME (factory));
+               if (factory)
+                       LOGD("[Re-arranged] Klass [%s] Factory [%s]",
+                               gst_element_factory_get_klass(factory), GST_OBJECT_NAME (factory));
+               else
+                       LOGE("[Re-arranged] failed to get factory object");
        }
 
        return new_factories;