]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
D-Bus(old): Fix WPS interface for PIN from wpa_supplicant case
authorJouni Malinen <j@w1.fi>
Sat, 27 Dec 2014 11:14:03 +0000 (13:14 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 29 Dec 2014 13:49:05 +0000 (15:49 +0200)
dbus_message_append_args() needs char** and &npin ended up being char*
and resulted in segmentation fault.

Signed-off-by: Jouni Malinen <j@w1.fi>
wpa_supplicant/dbus/dbus_old_handlers_wps.c

index bb793824653c9db9bb1b930853a14c4b9229dae0..6c1c13b7135a4ca30a7f4ba1084db20c0dda7676 100644 (file)
@@ -73,6 +73,7 @@ DBusMessage * wpas_dbus_iface_wps_pin(DBusMessage *message,
        char *pin = NULL;
        u8 bssid[ETH_ALEN], *_bssid = NULL;
        int ret = 0;
+       char npin[9];
 
        if (!dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &arg_bssid,
                                   DBUS_TYPE_STRING, &pin, DBUS_TYPE_INVALID))
@@ -104,15 +105,12 @@ DBusMessage * wpas_dbus_iface_wps_pin(DBusMessage *message,
        if (reply == NULL)
                return NULL;
 
-       if (ret == 0) {
-               dbus_message_append_args(reply, DBUS_TYPE_STRING, &pin,
-                                        DBUS_TYPE_INVALID);
-       } else {
-               char npin[9];
+       if (ret > 0) {
                os_snprintf(npin, sizeof(npin), "%08d", ret);
-               dbus_message_append_args(reply, DBUS_TYPE_STRING, &npin,
-                                        DBUS_TYPE_INVALID);
+               pin = npin;
        }
+       dbus_message_append_args(reply, DBUS_TYPE_STRING, &pin,
+                                DBUS_TYPE_INVALID);
        return reply;
 }