Browse Source

dbus: Verify dbus_message_new_method_return() return value before use

Jouni Malinen 15 years ago
parent
commit
ba96adb65f
1 changed files with 7 additions and 4 deletions
  1. 7 4
      wpa_supplicant/dbus/dbus_new_helpers.c

+ 7 - 4
wpa_supplicant/dbus/dbus_new_helpers.c

@@ -589,7 +589,7 @@ static DBusMessage * introspect(DBusMessage *message,
 				struct wpa_dbus_object_desc *obj_dsc)
 				struct wpa_dbus_object_desc *obj_dsc)
 {
 {
 
 
-	DBusMessage *reply = NULL;
+	DBusMessage *reply;
 	struct interfaces *ifaces, *tmp;
 	struct interfaces *ifaces, *tmp;
 	struct wpa_dbus_signal_desc *signal_dsc;
 	struct wpa_dbus_signal_desc *signal_dsc;
 	struct wpa_dbus_method_desc *method_dsc;
 	struct wpa_dbus_method_desc *method_dsc;
@@ -603,9 +603,6 @@ static DBusMessage * introspect(DBusMessage *message,
 	xmlNodePtr method_node = NULL, signal_node = NULL;
 	xmlNodePtr method_node = NULL, signal_node = NULL;
 	xmlNodePtr property_node = NULL, arg_node = NULL;
 	xmlNodePtr property_node = NULL, arg_node = NULL;
 
 
-	/* Create and initialize the return message */
-	reply = dbus_message_new_method_return(message);
-
 	/* root node and dtd */
 	/* root node and dtd */
 	doc = xmlNewDoc(BAD_CAST "1.0");
 	doc = xmlNewDoc(BAD_CAST "1.0");
 	root_node = xmlNewNode(NULL, BAD_CAST "node");
 	root_node = xmlNewNode(NULL, BAD_CAST "node");
@@ -809,6 +806,12 @@ static DBusMessage * introspect(DBusMessage *message,
 		os_free(tmp);
 		os_free(tmp);
 	}
 	}
 
 
+	reply = dbus_message_new_method_return(message);
+	if (reply == NULL) {
+		xmlFree(intro_str);
+		return NULL;
+	}
+
 	dbus_message_append_args(reply, DBUS_TYPE_STRING, &intro_str,
 	dbus_message_append_args(reply, DBUS_TYPE_STRING, &intro_str,
 				 DBUS_TYPE_INVALID);
 				 DBUS_TYPE_INVALID);