OSDN Git Service

wpa_supplicant: Remove snprintf call from interface= extension
authorDmitry Shmidt <dimitrysh@google.com>
Mon, 16 Jul 2012 23:15:05 +0000 (16:15 -0700)
committerDmitry Shmidt <dimitrysh@google.com>
Tue, 17 Jul 2012 00:48:44 +0000 (17:48 -0700)
BUG: b/6826116

Change-Id: I35023ce94152a402da94c34083de8ea1387cc758
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
wpa_supplicant/ctrl_iface_unix.c

index b4af793..301156e 100644 (file)
@@ -165,33 +165,26 @@ static void wpa_supplicant_ctrl_iface_receive(int sock, void *eloop_ctx,
                        reply_len = 2;
        } else {
 #if defined(CONFIG_P2P) && defined(ANDROID_P2P)
-               char *ifname = NULL, *arg;
-               char cmd[256];
-               /* Skip the command name */
-               arg = os_strchr(buf, ' ');
-               if (arg) {
-                       *arg++ = '\0';
-                       os_strncpy(cmd, buf, sizeof(cmd));
-                       /* Now search for interface= */
-                       if (os_strncmp(arg, "interface=", 10) == 0) {
-                               ifname = arg + 10;
-                               arg = os_strchr(ifname, ' ');
-                               if (arg)
-                                       *arg++ = '\0';
-                               wpa_printf(MSG_DEBUG, "Found interface= in the arg %s ifname %s", arg, ifname);
-                               for (wpa_s = wpa_s->global->ifaces; wpa_s; wpa_s = wpa_s->next) {
-                                       if (os_strcmp(wpa_s->ifname, ifname) == 0)
-                                               break;
-                               }
-                               if (wpa_s == NULL) {
-                                       wpa_printf(MSG_ERROR, "P2P: interface=%s does not exist", ifname);
-                                       wpa_s = eloop_ctx;
-                               }
+               char *ifname, *ifend;
+
+               ifname = os_strstr(buf, "interface=");
+               if (ifname != NULL) {
+                       ifend = os_strchr(ifname + 10, ' ');
+                       if (ifend != NULL)
+                               *ifend++ = '\0';
+                       else
+                               ifend = "";
+                       wpa_printf(MSG_DEBUG, "Found %s", ifname);
+                       for (wpa_s = wpa_s->global->ifaces; wpa_s; wpa_s = wpa_s->next) {
+                               if (os_strcmp(wpa_s->ifname, ifname + 10) == 0)
+                                       break;
+                       }
+                       if (wpa_s == NULL) {
+                               wpa_printf(MSG_ERROR, "P2P: %s does not exist", ifname);
+                               wpa_s = eloop_ctx;
                        }
-                       if (arg)
-                               os_snprintf(buf, sizeof(buf), "%s %s", cmd, arg);
+                       os_memmove(ifname, ifend, strlen(ifend) + 1);
                }
-               wpa_printf(MSG_DEBUG, "wpa_s %p cmd %s", wpa_s, buf);
 #endif /* defined CONFIG_P2P && defined ANDROID_P2P */
                reply = wpa_supplicant_ctrl_iface_process(wpa_s, buf,
                                                          &reply_len);