lua: fix string description of mixed WPA3 modes
authorJo-Philipp Wich <jo@mein.io>
Wed, 16 Oct 2019 14:01:55 +0000 (16:01 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 16 Oct 2019 14:41:55 +0000 (16:41 +0200)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
iwinfo_lua.c

index 3d9d95e54b5fa4d36614118d569e2f82dd00f8d8..58a5537b638634a21298eeb706c3e080741e8e6e 100644 (file)
@@ -106,6 +106,8 @@ static char * iwinfo_crypto_print_suites(int suites)
 static char * iwinfo_crypto_desc(struct iwinfo_crypto_entry *c)
 {
        static char desc[512] = { 0 };
+       char *pos = desc;
+       int i, n;
 
        if (c)
        {
@@ -135,35 +137,26 @@ static char * iwinfo_crypto_desc(struct iwinfo_crypto_entry *c)
                        /* WPA */
                        else if (c->wpa_version)
                        {
-                               switch (c->wpa_version) {
-                                       case 4:
-                                               sprintf(desc, "WPA3 %s (%s)",
-                                                       iwinfo_crypto_print_suites(c->auth_suites),
-                                                       iwinfo_crypto_print_ciphers(
-                                                               c->pair_ciphers | c->group_ciphers));
-                                               break;
-
-                                       case 3:
-                                               sprintf(desc, "mixed WPA/WPA2 %s (%s)",
-                                                       iwinfo_crypto_print_suites(c->auth_suites),
-                                                       iwinfo_crypto_print_ciphers(
-                                                               c->pair_ciphers | c->group_ciphers));
-                                               break;
-
-                                       case 2:
-                                               sprintf(desc, "WPA2 %s (%s)",
-                                                       iwinfo_crypto_print_suites(c->auth_suites),
-                                                       iwinfo_crypto_print_ciphers(
-                                                               c->pair_ciphers | c->group_ciphers));
-                                               break;
-
-                                       case 1:
-                                               sprintf(desc, "WPA %s (%s)",
-                                                       iwinfo_crypto_print_suites(c->auth_suites),
-                                                       iwinfo_crypto_print_ciphers(
-                                                               c->pair_ciphers | c->group_ciphers));
-                                               break;
-                               }
+                               for (i = 0, n = 0; i < 3; i++)
+                                       if (c->wpa_version & (1 << i))
+                                               n++;
+
+                               if (n > 1)
+                                       pos += sprintf(pos, "mixed ");
+
+                               for (i = 0; i < 3; i++)
+                                       if (c->wpa_version & (1 << i))
+                                               if (i)
+                                                       pos += sprintf(pos, "WPA%d/", i + 1);
+                                               else
+                                                       pos += sprintf(pos, "WPA/");
+
+                               pos--;
+
+                               sprintf(pos, " %s (%s)",
+                                       iwinfo_crypto_print_suites(c->auth_suites),
+                                       iwinfo_crypto_print_ciphers(
+                                               c->pair_ciphers | c->group_ciphers));
                        }
                        else
                        {