From: Jo-Philipp Wich Date: Wed, 16 Oct 2019 14:01:55 +0000 (+0200) Subject: lua: fix string description of mixed WPA3 modes X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=3ac846e7dc915969fba316d3070d327a94aefbbe;p=oweals%2Fiwinfo.git lua: fix string description of mixed WPA3 modes Signed-off-by: Jo-Philipp Wich --- diff --git a/iwinfo_lua.c b/iwinfo_lua.c index 3d9d95e..58a5537 100644 --- a/iwinfo_lua.c +++ b/iwinfo_lua.c @@ -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 {