diff --git a/wpa_supplicant/dbus/dbus_new_introspect.c b/wpa_supplicant/dbus/dbus_new_introspect.c index e0dd9e2e4..6209c6785 100644 --- a/wpa_supplicant/dbus/dbus_new_introspect.c +++ b/wpa_supplicant/dbus/dbus_new_introspect.c @@ -37,14 +37,16 @@ static struct interfaces * add_interface(struct dl_list *list, iface = os_zalloc(sizeof(struct interfaces)); if (!iface) return NULL; + iface->dbus_interface = os_strdup(dbus_interface); iface->xml = wpabuf_alloc(6000); - if (iface->xml == NULL) { + if (iface->dbus_interface == NULL || iface->xml == NULL) { + os_free(iface->dbus_interface); + wpabuf_free(iface->xml); os_free(iface); return NULL; } wpabuf_printf(iface->xml, "", dbus_interface); dl_list_add_tail(list, &iface->list); - iface->dbus_interface = os_strdup(dbus_interface); return iface; }