From 018ea797875b5f61c208f2845615460bc39c146c Mon Sep 17 00:00:00 2001 From: Mirsal Ennaime Date: Fri, 1 Feb 2013 18:25:45 +0100 Subject: [PATCH] dbus: Add missing memory allocation failure handling Handle memory allocation failures when sending the PropertyChanged signal in the TrackList interface implementation. --- modules/control/dbus/dbus_tracklist.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/modules/control/dbus/dbus_tracklist.c b/modules/control/dbus/dbus_tracklist.c index 7c02cc3266..353919dd5a 100644 --- a/modules/control/dbus/dbus_tracklist.c +++ b/modules/control/dbus/dbus_tracklist.c @@ -496,17 +496,29 @@ PropertiesChangedSignal( intf_thread_t *p_intf, OUT_ARGUMENTS; ADD_STRING( &psz_interface_name ); - dbus_message_iter_open_container( &args, DBUS_TYPE_ARRAY, "{sv}", - &changed_properties ); - dbus_message_iter_close_container( &args, &changed_properties ); + if( unlikely(!dbus_message_iter_open_container( &args, + DBUS_TYPE_ARRAY, "{sv}", + &changed_properties )) ) + return DBUS_HANDLER_RESULT_NEED_MEMORY; - dbus_message_iter_open_container( &args, DBUS_TYPE_ARRAY, "s", - &invalidated_properties ); + if( unlikely(!dbus_message_iter_close_container( &args, + &changed_properties )) ) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + + if( unlikely(!dbus_message_iter_open_container( &args, DBUS_TYPE_ARRAY, "s", + &invalidated_properties )) ) + return DBUS_HANDLER_RESULT_NEED_MEMORY; i_properties = vlc_dictionary_keys_count( p_changed_properties ); ppsz_properties = vlc_dictionary_all_keys( p_changed_properties ); + if( unlikely(!ppsz_properties) ) + { + dbus_message_iter_abandon_container( &args, &invalidated_properties ); + return DBUS_HANDLER_RESULT_NEED_MEMORY; + } + for( int i = 0; i < i_properties; i++ ) { if( !strcmp( ppsz_properties[i], "Tracks" ) ) @@ -517,9 +529,12 @@ PropertiesChangedSignal( intf_thread_t *p_intf, free( ppsz_properties[i] ); } - dbus_message_iter_close_container( &args, &invalidated_properties ); free( ppsz_properties ); + if( unlikely(!dbus_message_iter_close_container( &args, + &invalidated_properties )) ) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + SIGNAL_SEND; } -- 2.39.2