From: Seungbae Shin Date: Wed, 4 Nov 2020 12:43:38 +0000 (+0900) Subject: mm_sound_proxy: null check before variant unref X-Git-Tag: submit/tizen/20201109.034524^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5648f8e726b45de150346c84928da99b0ed314c5;p=platform%2Fcore%2Fmultimedia%2Flibmm-sound.git mm_sound_proxy: null check before variant unref [Version] 0.13.4 [Issue Type] Revise Change-Id: Ife96c7915a3c190e77cc9e9d45168828b537deff --- diff --git a/mm_sound_proxy.c b/mm_sound_proxy.c index 706f28f..86e4621 100644 --- a/mm_sound_proxy.c +++ b/mm_sound_proxy.c @@ -122,12 +122,14 @@ static int parse_device_variant(GVariant *v, int *device_id, const char **device if (*stream_num > MAX_STREAM_ON_DEVICE) { debug_error("too many streams on device %d", *stream_num); ret = MM_ERROR_SOUND_INTERNAL; - goto finish; + goto cleanup; } - while (g_variant_iter_loop(&array_iter, "i", &stream_id[i++])) ; -finish: - g_variant_unref(array_v); + while (g_variant_iter_loop(&array_iter, "i", &stream_id[i++])) {} + +cleanup: + if (array_v) + g_variant_unref(array_v); return ret; } @@ -304,20 +306,22 @@ int mm_sound_proxy_test(int a, int b, int *get) if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_SOUND_SERVER, AUDIO_METHOD_TEST, params, &result)) != MM_ERROR_NONE) { debug_error("dbus test call failed"); - g_variant_unref(result); - return ret; + goto cleanup; } if (result) { g_variant_get(result, "(i)", &reply); debug_log("reply : %d", reply); *get = reply; - g_variant_unref(result); } else { debug_error("reply null"); ret = MM_ERROR_SOUND_INTERNAL; } +cleanup: + if (result) + g_variant_unref(result); + debug_fleave(); return ret; } @@ -355,7 +359,8 @@ int mm_sound_proxy_is_stream_on_device(int stream_id, int device_id, bool *is_on } cleanup: - g_variant_unref(result); + if (result) + g_variant_unref(result); debug_fleave(); return ret; @@ -444,8 +449,8 @@ int mm_sound_proxy_get_current_connected_device_list(int device_flags, GList** d break; } } - g_variant_unref(child); - + if (child) + g_variant_unref(child); #ifdef TIZEN_TV device_item = _get_tv_bt_device(); @@ -458,7 +463,8 @@ int mm_sound_proxy_get_current_connected_device_list(int device_flags, GList** d #endif /* TIZEN_TV */ cleanup: - g_variant_unref(result); + if (result) + g_variant_unref(result); debug_fleave(); return ret; @@ -514,7 +520,8 @@ int mm_sound_proxy_get_device_by_id(int device_id, mm_sound_device_t **device) } cleanup: - g_variant_unref(result); + if (result) + g_variant_unref(result); debug_fleave(); return ret; @@ -531,17 +538,17 @@ int mm_sound_proxy_add_device_connected_callback(mm_sound_device_connected_wrapp if ((ret = mm_sound_dbus_signal_subscribe_to(AUDIO_PROVIDER_DEVICE_MANAGER, AUDIO_EVENT_DEVICE_CONNECTED, dbus_callback, cb_data, simple_callback_data_free_func, &cb_data->subs_id)) != MM_ERROR_NONE) { debug_error("add device connected callback failed"); - goto finish; + goto cleanup; } if ((ret = _notify_subscription(AUDIO_EVENT_DEVICE_CONNECTED, cb_data->subs_id, TRUE)) != MM_ERROR_NONE) { debug_error("failed to notify subscription of device connected event"); - goto finish; + goto cleanup; } *subs_id = cb_data->subs_id; -finish: +cleanup: debug_fleave(); return ret; } @@ -553,13 +560,13 @@ int mm_sound_proxy_remove_device_connected_callback(unsigned subs_id) if ((ret = mm_sound_dbus_signal_unsubscribe(subs_id)) != MM_ERROR_NONE) { debug_error("remove device connected callback failed"); - goto finish; + goto cleanup; } if ((ret = _notify_subscription(AUDIO_EVENT_DEVICE_CONNECTED, subs_id, FALSE)) != MM_ERROR_NONE) debug_error("failed to notify unsubscription of device connected event"); -finish: +cleanup: debug_fleave(); return ret; } @@ -657,7 +664,7 @@ int mm_sound_proxy_remove_device_running_changed_callback(unsigned subs_id) int mm_sound_proxy_set_volume_by_type(const char *volume_type, const unsigned volume_level) { int ret = MM_ERROR_NONE; - char *reply = NULL, *direction = "out"; + const char *reply = NULL, *direction = "out"; GVariant *params = NULL, *result = NULL; debug_fenter(); @@ -669,8 +676,7 @@ int mm_sound_proxy_set_volume_by_type(const char *volume_type, const unsigned vo if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_SET_VOLUME_LEVEL, params, &result)) != MM_ERROR_NONE) { debug_error("dbus set volume by type failed"); - g_variant_unref(result); - return ret; + goto cleanup; } if (result) { @@ -680,12 +686,15 @@ int mm_sound_proxy_set_volume_by_type(const char *volume_type, const unsigned vo ret = MM_ERROR_INVALID_ARGUMENT; else if (strcmp(reply, "STREAM_MANAGER_RETURN_OK")) ret = MM_ERROR_SOUND_INTERNAL; - g_variant_unref(result); } else { debug_error("reply null"); ret = MM_ERROR_SOUND_INTERNAL; } +cleanup: + if (result) + g_variant_unref(result); + debug_fleave(); return ret; } @@ -755,7 +764,7 @@ int mm_sound_proxy_remove_ducking_state_changed_callback(unsigned subs_id) int mm_sound_proxy_set_mute_by_type(const char *volume_type, bool mute) { int ret = MM_ERROR_NONE; - char *reply = NULL, *direction = "out"; + const char *reply = NULL, *direction = "out"; GVariant *params = NULL, *result = NULL; debug_fenter(); @@ -767,8 +776,7 @@ int mm_sound_proxy_set_mute_by_type(const char *volume_type, bool mute) if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_SET_MUTE, params, &result)) != MM_ERROR_NONE) { debug_error("dbus set mute by type failed"); - g_variant_unref(result); - return ret; + goto cleanup; } if (result) { @@ -776,20 +784,22 @@ int mm_sound_proxy_set_mute_by_type(const char *volume_type, bool mute) debug_log("reply : %s", reply); if (strcmp(reply, "STREAM_MANAGER_RETURN_OK")) ret = MM_ERROR_SOUND_INTERNAL; - g_variant_unref(result); } else { debug_error("reply null"); ret = MM_ERROR_SOUND_INTERNAL; } +cleanup: + if (result) + g_variant_unref(result); + debug_fleave(); return ret; } -int mm_sound_proxy_set_filter_by_type(const char *stream_type, const char *filter_name, const char *filter_parameters, const char *filter_group) -{ +int mm_sound_proxy_set_filter_by_type(const char *stream_type, const char *filter_name, const char *filter_parameters, const char *filter_group) { int ret = MM_ERROR_NONE; - char *reply = NULL; + const char *reply = NULL; GVariant *params = NULL, *result = NULL; debug_fenter(); @@ -799,8 +809,10 @@ int mm_sound_proxy_set_filter_by_type(const char *stream_type, const char *filte return MM_ERROR_SOUND_INTERNAL; } - if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_SET_FILTER, params, &result)) != MM_ERROR_NONE) + if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_SET_FILTER, params, &result)) != MM_ERROR_NONE) { debug_error("dbus set filter by type failed"); + goto cleanup; + } /* stream-manager always returns a string as return value */ if (result) { @@ -808,13 +820,15 @@ int mm_sound_proxy_set_filter_by_type(const char *stream_type, const char *filte debug_log("reply : %s", reply); if (strcmp(reply, "STREAM_MANAGER_RETURN_OK")) ret = MM_ERROR_SOUND_INTERNAL; - g_variant_unref(result); } else { debug_error("reply null"); - if (ret == MM_ERROR_NONE) - ret = MM_ERROR_SOUND_INTERNAL; + ret = MM_ERROR_SOUND_INTERNAL; } +cleanup: + if (result) + g_variant_unref(result); + debug_fleave(); return ret; } @@ -822,7 +836,7 @@ int mm_sound_proxy_set_filter_by_type(const char *stream_type, const char *filte int mm_sound_proxy_unset_filter_by_type(const char *stream_type) { int ret = MM_ERROR_NONE; - char *reply = NULL; + const char *reply = NULL; GVariant *params = NULL, *result = NULL; debug_fenter(); @@ -832,8 +846,10 @@ int mm_sound_proxy_unset_filter_by_type(const char *stream_type) return MM_ERROR_SOUND_INTERNAL; } - if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_UNSET_FILTER, params, &result)) != MM_ERROR_NONE) + if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_UNSET_FILTER, params, &result)) != MM_ERROR_NONE) { debug_error("dbus unset filter by type failed"); + goto cleanup; + } /* stream-manager always returns a string as return value */ if (result) { @@ -841,13 +857,15 @@ int mm_sound_proxy_unset_filter_by_type(const char *stream_type) debug_log("reply : %s", reply); if (strcmp(reply, "STREAM_MANAGER_RETURN_OK")) ret = MM_ERROR_SOUND_INTERNAL; - g_variant_unref(result); } else { debug_error("reply null"); - if (ret == MM_ERROR_NONE) - ret = MM_ERROR_SOUND_INTERNAL; + ret = MM_ERROR_SOUND_INTERNAL; } +cleanup: + if (result) + g_variant_unref(result); + debug_fleave(); return ret; } @@ -855,7 +873,7 @@ int mm_sound_proxy_unset_filter_by_type(const char *stream_type) int mm_sound_proxy_control_filter_by_type(const char *stream_type, const char *filter_name, const char *filter_controls) { int ret = MM_ERROR_NONE; - char *reply = NULL; + const char *reply = NULL; GVariant *params = NULL, *result = NULL; debug_fenter(); @@ -865,23 +883,24 @@ int mm_sound_proxy_control_filter_by_type(const char *stream_type, const char *f return MM_ERROR_SOUND_INTERNAL; } - if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_CONTROL_FILTER, params, &result)) != MM_ERROR_NONE) + if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_CONTROL_FILTER, params, &result)) != MM_ERROR_NONE) { debug_error("dbus control filter by type failed"); - + goto cleanup; + } /* stream-manager always returns a string as return value */ if (result) { g_variant_get(result, "(&s)", &reply); debug_log("reply : %s", reply); if (strcmp(reply, "STREAM_MANAGER_RETURN_OK")) ret = MM_ERROR_SOUND_INTERNAL; - g_variant_unref(result); } else { debug_error("reply null"); - if (ret == MM_ERROR_NONE) - ret = MM_ERROR_SOUND_INTERNAL; + ret = MM_ERROR_SOUND_INTERNAL; } - g_variant_unref(result); +cleanup: + if (result) + g_variant_unref(result); debug_fleave(); return ret; @@ -984,7 +1003,8 @@ int mm_sound_proxy_acquire_focus(int index, mm_sound_focus_type_e type, int opti if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_FOCUS_SERVER, AUDIO_METHOD_ACQUIRE_FOCUS, params, &result)) != MM_ERROR_NONE) debug_error("dbus acquire focus failed"); - g_variant_unref(result); + if (result) + g_variant_unref(result); } debug_fleave(); @@ -1017,18 +1037,18 @@ int mm_sound_proxy_release_focus(int index, mm_sound_focus_type_e type, int opti if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_FOCUS_SERVER, AUDIO_METHOD_RELEASE_FOCUS, params, &result)) != MM_ERROR_NONE) debug_error("dbus release focus failed"); - g_variant_unref(result); + if (result) + g_variant_unref(result); } debug_fleave(); - return ret; } int mm_sound_proxy_update_stream_focus_status(int focus_id, unsigned int status) { int ret = MM_ERROR_NONE; - char *reply = NULL; + const char *reply = NULL; GVariant *params = NULL, *result = NULL; debug_fenter(); @@ -1038,8 +1058,10 @@ int mm_sound_proxy_update_stream_focus_status(int focus_id, unsigned int status) return MM_ERROR_SOUND_INTERNAL; } - if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_UPDATE_STREAM_FOCUS_STATUS, params, &result)) != MM_ERROR_NONE) + if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_UPDATE_STREAM_FOCUS_STATUS, params, &result)) != MM_ERROR_NONE) { debug_error("dbus set volume by type failed"); + goto cleanup; + } /* stream-manager always returns a string as return value */ if (result) { @@ -1047,14 +1069,16 @@ int mm_sound_proxy_update_stream_focus_status(int focus_id, unsigned int status) debug_log("reply : %s", reply); if (strcmp(reply, "STREAM_MANAGER_RETURN_OK")) ret = MM_ERROR_SOUND_INTERNAL; - g_variant_unref(result); } else { debug_error("reply null"); ret = MM_ERROR_SOUND_INTERNAL; } - debug_fleave(); +cleanup: + if (result) + g_variant_unref(result); + debug_fleave(); return ret; } diff --git a/packaging/libmm-sound.spec b/packaging/libmm-sound.spec index c48fba4..8c8fb1b 100644 --- a/packaging/libmm-sound.spec +++ b/packaging/libmm-sound.spec @@ -1,6 +1,6 @@ Name: libmm-sound Summary: MMSound Package contains client lib and sound_server binary -Version: 0.13.3 +Version: 0.13.4 Release: 0 Group: System/Libraries License: Apache-2.0