From 660dea3f6a6d22fc63fdf09d5b533daebd425d72 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sun, 17 Mar 2019 15:34:04 -0400 Subject: [PATCH] net_server: Clean up authentication handling code. Even if we find an authentication string, make sure it's not empty before trying to use it; and use the other one if possible. --- src/servers/net/NetServer.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/servers/net/NetServer.cpp b/src/servers/net/NetServer.cpp index 90ffe4fe47..bd32a69730 100644 --- a/src/servers/net/NetServer.cpp +++ b/src/servers/net/NetServer.cpp @@ -1060,24 +1060,25 @@ NetServer::_JoinNetwork(const BMessage& message, const BNetworkAddress* address, askForConfig = true; } - const char* string; - if (message.FindString("authentication", &string) == B_OK + BString string; + if ((message.FindString("authentication", &string) == B_OK + && !string.IsEmpty()) || (found && networkMessage.FindString("authentication", &string) - == B_OK)) { + == B_OK && !string.IsEmpty())) { askForConfig = false; - if (!strcasecmp(string, "wpa2")) { + if (string.ICompare("wpa2") == 0) { network.authentication_mode = B_NETWORK_AUTHENTICATION_WPA2; network.key_mode = B_KEY_MODE_IEEE802_1X; network.cipher = network.group_cipher = B_NETWORK_CIPHER_CCMP; - } else if (!strcasecmp(string, "wpa")) { + } else if (string.ICompare("wpa") == 0) { network.authentication_mode = B_NETWORK_AUTHENTICATION_WPA; network.key_mode = B_KEY_MODE_IEEE802_1X; network.cipher = network.group_cipher = B_NETWORK_CIPHER_TKIP; - } else if (!strcasecmp(string, "wep")) { + } else if (string.ICompare("wep") == 0) { network.authentication_mode = B_NETWORK_AUTHENTICATION_WEP; network.key_mode = B_KEY_MODE_NONE; network.cipher = network.group_cipher = B_NETWORK_CIPHER_WEP_40; - } else if (strcasecmp(string, "none") && strcasecmp(string, "open")) { + } else if (string.ICompare("none") != 0 && string.ICompare("open") != 0) { fprintf(stderr, "%s: invalid authentication mode.\n", name); askForConfig = true; }