Blob Blame History Raw
diff -up wpa_supplicant-0.5.7/ctrl_iface_dbus.c.signal-leak-fix wpa_supplicant-0.5.7/ctrl_iface_dbus.c
--- wpa_supplicant-0.5.7/ctrl_iface_dbus.c.signal-leak-fix	2007-12-06 18:10:22.000000000 -0500
+++ wpa_supplicant-0.5.7/ctrl_iface_dbus.c	2007-12-06 18:11:38.000000000 -0500
@@ -649,6 +649,7 @@ void wpa_supplicant_dbus_notify_scan_res
 		return;
 	}
 	dbus_connection_send(iface->con, signal, NULL);
+	dbus_message_unref (signal);
 }
 
 
@@ -666,7 +667,7 @@ void wpa_supplicant_dbus_notify_state_ch
 					     wpa_states old_state)
 {
 	struct ctrl_iface_dbus_priv *iface;
-	DBusMessage *signal;
+	DBusMessage *signal = NULL;
 	const char *path;
 	const char *new_state_str, *old_state_str;
 
@@ -711,7 +712,7 @@ void wpa_supplicant_dbus_notify_state_ch
 		wpa_printf(MSG_ERROR,
 		           "wpa_supplicant_dbus_notify_state_change[dbus]: "
 		           "couldn't convert state strings.");
-		return;
+		goto out;
 	}
 
 	if (!dbus_message_append_args(signal,
@@ -724,8 +725,13 @@ void wpa_supplicant_dbus_notify_state_ch
 		           "wpa_supplicant_dbus_notify_state_change[dbus]: "
 		           "not enough memory to construct state change "
 		           "signal.");
+		goto out;
 	}
+
 	dbus_connection_send(iface->con, signal, NULL);
+
+out:
+	dbus_message_unref (signal);
 }