summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-01-02 15:12:15 +0100
committerThomas Haller <thaller@redhat.com>2020-01-08 09:47:57 +0100
commit3d20c9985d78a316441fcbdf2069c66f30d91f2e (patch)
tree147c4677028211b11fc9c07ae36f9cb69dc19013
parente9d4980d6b22b90ef1017b9c94bfc6ce2b6ceafe (diff)
downloadNetworkManager-3d20c9985d78a316441fcbdf2069c66f30d91f2e.tar.gz
libnm: avoid deep nesting in checks of nm_utils_security_valid()
-rw-r--r--libnm-core/nm-utils.c127
1 files changed, 62 insertions, 65 deletions
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
index f5da87b7c5..5e1f70e41f 100644
--- a/libnm-core/nm-utils.c
+++ b/libnm-core/nm-utils.c
@@ -1220,99 +1220,96 @@ nm_utils_security_valid (NMUtilsSecurityType type,
return FALSE;
if (!(wifi_caps & NM_WIFI_DEVICE_CAP_WPA))
return FALSE;
- if (have_ap) {
- if (ap_wpa & NM_802_11_AP_SEC_KEY_MGMT_PSK) {
- if ( (ap_wpa & NM_802_11_AP_SEC_PAIR_TKIP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP))
- return TRUE;
- if ( (ap_wpa & NM_802_11_AP_SEC_PAIR_CCMP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
- return TRUE;
- }
- return FALSE;
+ if (!have_ap)
+ return TRUE;
+ if (ap_wpa & NM_802_11_AP_SEC_KEY_MGMT_PSK) {
+ if ( (ap_wpa & NM_802_11_AP_SEC_PAIR_TKIP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP))
+ return TRUE;
+ if ( (ap_wpa & NM_802_11_AP_SEC_PAIR_CCMP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
+ return TRUE;
}
- return TRUE;
+ return FALSE;
case NMU_SEC_WPA2_PSK:
if (!(wifi_caps & NM_WIFI_DEVICE_CAP_RSN))
return FALSE;
- if (have_ap) {
- if (adhoc) {
- if (!(wifi_caps & NM_WIFI_DEVICE_CAP_IBSS_RSN))
- return FALSE;
- if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
- return TRUE;
- } else {
- if (ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_PSK) {
- if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_TKIP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP))
- return TRUE;
- if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
- return TRUE;
- }
- }
+ if (!have_ap)
+ return TRUE;
+ if (adhoc) {
+ if (!(wifi_caps & NM_WIFI_DEVICE_CAP_IBSS_RSN))
+ return FALSE;
+ if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
+ return TRUE;
return FALSE;
}
- return TRUE;
+ if (ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_PSK) {
+ if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_TKIP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP))
+ return TRUE;
+ if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
+ return TRUE;
+ }
+ return FALSE;
case NMU_SEC_WPA_ENTERPRISE:
if (adhoc)
return FALSE;
if (!(wifi_caps & NM_WIFI_DEVICE_CAP_WPA))
return FALSE;
- if (have_ap) {
- if (!(ap_wpa & NM_802_11_AP_SEC_KEY_MGMT_802_1X))
- return FALSE;
- /* Ensure at least one WPA cipher is supported */
- if (!device_supports_ap_ciphers (wifi_caps, ap_wpa, FALSE))
- return FALSE;
- }
+ if (!have_ap)
+ return TRUE;
+ if (!(ap_wpa & NM_802_11_AP_SEC_KEY_MGMT_802_1X))
+ return FALSE;
+ /* Ensure at least one WPA cipher is supported */
+ if (!device_supports_ap_ciphers (wifi_caps, ap_wpa, FALSE))
+ return FALSE;
return TRUE;
case NMU_SEC_WPA2_ENTERPRISE:
if (adhoc)
return FALSE;
if (!(wifi_caps & NM_WIFI_DEVICE_CAP_RSN))
return FALSE;
- if (have_ap) {
- if (!(ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_802_1X))
- return FALSE;
- /* Ensure at least one WPA cipher is supported */
- if (!device_supports_ap_ciphers (wifi_caps, ap_rsn, FALSE))
- return FALSE;
- }
+ if (!have_ap)
+ return TRUE;
+ if (!(ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_802_1X))
+ return FALSE;
+ /* Ensure at least one WPA cipher is supported */
+ if (!device_supports_ap_ciphers (wifi_caps, ap_rsn, FALSE))
+ return FALSE;
return TRUE;
case NMU_SEC_SAE:
if (!(wifi_caps & NM_WIFI_DEVICE_CAP_RSN))
return FALSE;
- if (have_ap) {
- if (adhoc) {
- if (!(wifi_caps & NM_WIFI_DEVICE_CAP_IBSS_RSN))
- return FALSE;
- if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
- return TRUE;
- } else {
- if (ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_SAE) {
- if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_TKIP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP))
- return TRUE;
- if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
- && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
- return TRUE;
- }
- }
+ if (!have_ap)
+ return TRUE;
+ if (adhoc) {
+ if (!(wifi_caps & NM_WIFI_DEVICE_CAP_IBSS_RSN))
+ return FALSE;
+ if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
+ return TRUE;
return FALSE;
}
- return TRUE;
+ if (ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_SAE) {
+ if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_TKIP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP))
+ return TRUE;
+ if ( (ap_rsn & NM_802_11_AP_SEC_PAIR_CCMP)
+ && (wifi_caps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP))
+ return TRUE;
+ }
+ return FALSE;
case NMU_SEC_OWE:
if (adhoc)
return FALSE;
if (!(wifi_caps & NM_WIFI_DEVICE_CAP_RSN))
return FALSE;
- if (have_ap) {
- if (!(ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_OWE))
- return FALSE;
- }
+ if (!have_ap)
+ return TRUE;
+ if (!(ap_rsn & NM_802_11_AP_SEC_KEY_MGMT_OWE))
+ return FALSE;
return TRUE;
case NMU_SEC_INVALID:
break;