service: Add function to check the WPS PIN validity
authorJulien Massot <jmassot@aldebaran-robotics.com>
Fri, 13 Apr 2012 15:16:34 +0000 (15:16 +0000)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Tue, 17 Apr 2012 10:37:23 +0000 (13:37 +0300)
src/service.c

index 96dd0f9..88d7912 100644 (file)
@@ -4277,6 +4277,26 @@ int __connman_service_add_passphrase(struct connman_service *service,
        return err;
 }
 
+static int check_wpspin(const char *wpspin)
+{
+       guint i;
+
+       if (wpspin == NULL)
+               return 0;
+
+       /* A WPS PIN is always 8 chars length,
+        * its content is in digit representation.
+        */
+       if (strlen(wpspin) != 8)
+               return -ENOKEY;
+
+       for (i = 0; i < 8; i++)
+               if (!isdigit((unsigned char) wpspin[i]))
+                       return -ENOKEY;
+
+       return 0;
+}
+
 static void request_input_cb (struct connman_service *service,
                        connman_bool_t values_received,
                        const char *name, int name_len,