wifi: return error for AddAndActivate requests for hidden APs
If there's no SSID, we can't connect at all. So if a client passes in a hidden AP, and doesn't send the SSID in the partial connection info, we can't make a connection with it. Return an error instead of crashing.
This commit is contained in:
@@ -1460,6 +1460,26 @@ real_complete_connection (NMDevice *device,
|
|||||||
if (ap) {
|
if (ap) {
|
||||||
ssid = nm_ap_get_ssid (ap);
|
ssid = nm_ap_get_ssid (ap);
|
||||||
|
|
||||||
|
if (ssid == NULL) {
|
||||||
|
/* The AP must be hidden. Connecting to a WiFi AP requires the SSID
|
||||||
|
* as part of the initial handshake, so check the connection details
|
||||||
|
* for the SSID. The AP object will still be used for encryption
|
||||||
|
* settings and such.
|
||||||
|
*/
|
||||||
|
ssid = nm_setting_wireless_get_ssid (s_wifi);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ssid == NULL) {
|
||||||
|
/* If there's no SSID on the AP itself, and no SSID in the
|
||||||
|
* connection data, then we cannot connect at all. Return an error.
|
||||||
|
*/
|
||||||
|
g_set_error_literal (error,
|
||||||
|
NM_WIFI_ERROR,
|
||||||
|
NM_WIFI_ERROR_CONNECTION_INVALID,
|
||||||
|
"A 'wireless' setting with a valid SSID is required for hidden access points.");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* If the SSID is a well-known SSID, lock the connection to the AP's
|
/* If the SSID is a well-known SSID, lock the connection to the AP's
|
||||||
* specific BSSID so NM doesn't autoconnect to some random wifi net.
|
* specific BSSID so NM doesn't autoconnect to some random wifi net.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user