From e49ce2990f35d1d0f2d2f001eaf73c03b915d79d Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 24 Aug 2019 17:31:39 +0300 Subject: [PATCH] IEEE 802.1X authenticator: Coding style cleanup Signed-off-by: Jouni Malinen --- src/ap/ieee802_1x.c | 287 +++++++++++++++++++++++--------------------- 1 file changed, 149 insertions(+), 138 deletions(-) diff --git a/src/ap/ieee802_1x.c b/src/ap/ieee802_1x.c index 6263fa4e5..35fa40015 100644 --- a/src/ap/ieee802_1x.c +++ b/src/ap/ieee802_1x.c @@ -58,10 +58,9 @@ static void ieee802_1x_send(struct hostapd_data *hapd, struct sta_info *sta, len = sizeof(*xhdr) + datalen; buf = os_zalloc(len); - if (buf == NULL) { - wpa_printf(MSG_ERROR, "malloc() failed for " - "ieee802_1x_send(len=%lu)", - (unsigned long) len); + if (!buf) { + wpa_printf(MSG_ERROR, "malloc() failed for %s(len=%lu)", + __func__, (unsigned long) len); return; } @@ -152,12 +151,12 @@ static void ieee802_1x_tx_key_one(struct hostapd_data *hapd, size_t len, ekey_len; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL) + if (!sm) return; len = sizeof(*key) + key_len; buf = os_zalloc(sizeof(*hdr) + len); - if (buf == NULL) + if (!buf) return; hdr = (struct ieee802_1x_hdr *) buf; @@ -198,16 +197,16 @@ static void ieee802_1x_tx_key_one(struct hostapd_data *hapd, /* Key is encrypted using "Key-IV + MSK[0..31]" as the RC4-key and * MSK[32..63] is used to sign the message. */ - if (sm->eap_if->eapKeyData == NULL || sm->eap_if->eapKeyDataLen < 64) { - wpa_printf(MSG_ERROR, "No eapKeyData available for encrypting " - "and signing EAPOL-Key"); + if (!sm->eap_if->eapKeyData || sm->eap_if->eapKeyDataLen < 64) { + wpa_printf(MSG_ERROR, + "No eapKeyData available for encrypting and signing EAPOL-Key"); os_free(buf); return; } os_memcpy((u8 *) (key + 1), key_data, key_len); ekey_len = sizeof(key->key_iv) + 32; ekey = os_malloc(ekey_len); - if (ekey == NULL) { + if (!ekey) { wpa_printf(MSG_ERROR, "Could not encrypt key"); os_free(buf); return; @@ -244,7 +243,7 @@ static void ieee802_1x_tx_key(struct hostapd_data *hapd, struct sta_info *sta) struct eapol_authenticator *eapol = hapd->eapol_auth; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL || !sm->eap_if->eapKeyData) + if (!sm || !sm->eap_if->eapKeyData) return; wpa_printf(MSG_DEBUG, "IEEE 802.1X: Sending EAPOL-Key(s) to " MACSTR, @@ -265,12 +264,13 @@ static void ieee802_1x_tx_key(struct hostapd_data *hapd, struct sta_info *sta) if (hapd->conf->individual_wep_key_len > 0) { u8 *ikey; + ikey = os_malloc(hapd->conf->individual_wep_key_len); - if (ikey == NULL || + if (!ikey || random_get_bytes(ikey, hapd->conf->individual_wep_key_len)) { - wpa_printf(MSG_ERROR, "Could not generate random " - "individual WEP key."); + wpa_printf(MSG_ERROR, + "Could not generate random individual WEP key"); os_free(ikey); return; } @@ -286,8 +286,8 @@ static void ieee802_1x_tx_key(struct hostapd_data *hapd, struct sta_info *sta) if (hostapd_drv_set_key(hapd->conf->iface, hapd, WPA_ALG_WEP, sta->addr, 0, 1, NULL, 0, ikey, hapd->conf->individual_wep_key_len)) { - wpa_printf(MSG_ERROR, "Could not set individual WEP " - "encryption."); + wpa_printf(MSG_ERROR, + "Could not set individual WEP encryption"); } os_free(ikey); @@ -347,13 +347,13 @@ static void ieee802_1x_learn_identity(struct hostapd_data *hapd, eap_erp_update_identity(sm->eap, eap, len); identity = eap_get_identity(sm->eap, &identity_len); - if (identity == NULL) + if (!identity) return; /* Save station identity for future RADIUS packets */ os_free(sm->identity); sm->identity = (u8 *) dup_binstr(identity, identity_len); - if (sm->identity == NULL) { + if (!sm->identity) { sm->identity_len = 0; return; } @@ -608,8 +608,7 @@ int add_common_radius_attr(struct hostapd_data *hapd, if (!radius_msg_add_attr(msg, attr->type, wpabuf_head(attr->val), wpabuf_len(attr->val))) { - wpa_printf(MSG_ERROR, "Could not add RADIUS " - "attribute"); + wpa_printf(MSG_ERROR, "Could not add RADIUS attribute"); return -1; } } @@ -682,18 +681,17 @@ void ieee802_1x_encapsulate_radius(struct hostapd_data *hapd, struct radius_msg *msg; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL) + if (!sm) return; ieee802_1x_learn_identity(hapd, sm, eap, len); - wpa_printf(MSG_DEBUG, "Encapsulating EAP message into a RADIUS " - "packet"); + wpa_printf(MSG_DEBUG, "Encapsulating EAP message into a RADIUS packet"); sm->radius_identifier = radius_client_get_id(hapd->radius); msg = radius_msg_new(RADIUS_CODE_ACCESS_REQUEST, sm->radius_identifier); - if (msg == NULL) { + if (!msg) { wpa_printf(MSG_INFO, "Could not create new RADIUS packet"); return; } @@ -740,12 +738,12 @@ void ieee802_1x_encapsulate_radius(struct hostapd_data *hapd, int res = radius_msg_copy_attr(msg, sm->last_recv_radius, RADIUS_ATTR_STATE); if (res < 0) { - wpa_printf(MSG_INFO, "Could not copy State attribute from previous Access-Challenge"); + wpa_printf(MSG_INFO, + "Could not copy State attribute from previous Access-Challenge"); goto fail; } - if (res > 0) { + if (res > 0) wpa_printf(MSG_DEBUG, "Copied RADIUS State Attribute"); - } } if (hapd->conf->radius_request_cui) { @@ -774,8 +772,8 @@ void ieee802_1x_encapsulate_radius(struct hostapd_data *hapd, if (!radius_msg_add_wfa( msg, RADIUS_VENDOR_ATTR_WFA_HS20_AP_VERSION, &ver, 1)) { - wpa_printf(MSG_ERROR, "Could not add HS 2.0 AP " - "version"); + wpa_printf(MSG_ERROR, + "Could not add HS 2.0 AP version"); goto fail; } @@ -783,6 +781,7 @@ void ieee802_1x_encapsulate_radius(struct hostapd_data *hapd, const u8 *pos; u8 buf[3]; u16 id; + pos = wpabuf_head_u8(sta->hs20_ie); buf[0] = (*pos) >> 4; if (((*pos) & HS20_PPS_MO_ID_PRESENT) && @@ -795,8 +794,8 @@ void ieee802_1x_encapsulate_radius(struct hostapd_data *hapd, msg, RADIUS_VENDOR_ATTR_WFA_HS20_STA_VERSION, buf, sizeof(buf))) { - wpa_printf(MSG_ERROR, "Could not add HS 2.0 " - "STA version"); + wpa_printf(MSG_ERROR, + "Could not add HS 2.0 STA version"); goto fail; } } @@ -855,13 +854,14 @@ static void handle_eap_response(struct hostapd_data *hapd, { u8 type, *data; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL) + + if (!sm) return; data = (u8 *) (eap + 1); if (len < sizeof(*eap) + 1) { - wpa_printf(MSG_INFO, "handle_eap_response: too short response data"); + wpa_printf(MSG_INFO, "%s: too short response data", __func__); return; } @@ -889,12 +889,11 @@ static void handle_eap_initiate(struct hostapd_data *hapd, u8 type, *data; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL) + if (!sm) return; if (len < sizeof(*eap) + 1) { - wpa_printf(MSG_INFO, - "handle_eap_initiate: too short response data"); + wpa_printf(MSG_INFO, "%s: too short response data", __func__); return; } @@ -902,8 +901,8 @@ static void handle_eap_initiate(struct hostapd_data *hapd, type = data[0]; hostapd_logger(hapd, sm->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_DEBUG, "received EAP packet (code=%d " - "id=%d len=%d) from STA: EAP Initiate type %u", + HOSTAPD_LEVEL_DEBUG, + "received EAP packet (code=%d id=%d len=%d) from STA: EAP Initiate type %u", eap->code, eap->identifier, be_to_host16(eap->length), type); @@ -959,12 +958,13 @@ static void handle_eap(struct hostapd_data *hapd, struct sta_info *sta, wpa_printf(MSG_DEBUG, " Invalid EAP length"); return; } else if (eap_len > len) { - wpa_printf(MSG_DEBUG, " Too short frame to contain this EAP " - "packet"); + wpa_printf(MSG_DEBUG, + " Too short frame to contain this EAP packet"); return; } else if (eap_len < len) { - wpa_printf(MSG_DEBUG, " Ignoring %lu extra bytes after EAP " - "packet", (unsigned long) len - eap_len); + wpa_printf(MSG_DEBUG, + " Ignoring %lu extra bytes after EAP packet", + (unsigned long) len - eap_len); } switch (eap->code) { @@ -982,6 +982,7 @@ struct eapol_state_machine * ieee802_1x_alloc_eapol_sm(struct hostapd_data *hapd, struct sta_info *sta) { int flags = 0; + if (sta->flags & WLAN_STA_PREAUTH) flags |= EAPOL_SM_PREAUTH; if (sta->wpa_sm) { @@ -1046,8 +1047,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, sta = ap_get_sta(hapd, sa); if (!sta || (!(sta->flags & (WLAN_STA_ASSOC | WLAN_STA_PREAUTH)) && !(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_WIRED))) { - wpa_printf(MSG_DEBUG, "IEEE 802.1X data frame from not " - "associated/Pre-authenticating STA"); + wpa_printf(MSG_DEBUG, + "IEEE 802.1X data frame from not associated/Pre-authenticating STA"); if (sta && (sta->flags & WLAN_STA_AUTH)) { wpa_printf(MSG_DEBUG, "Saving EAPOL frame from " MACSTR @@ -1069,14 +1070,15 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, hdr->version, hdr->type, datalen); if (len - sizeof(*hdr) < datalen) { - wpa_printf(MSG_INFO, " frame too short for this IEEE 802.1X packet"); + wpa_printf(MSG_INFO, + " frame too short for this IEEE 802.1X packet"); if (sta->eapol_sm) sta->eapol_sm->dot1xAuthEapLengthErrorFramesRx++; return; } if (len - sizeof(*hdr) > datalen) { - wpa_printf(MSG_DEBUG, " ignoring %lu extra octets after " - "IEEE 802.1X packet", + wpa_printf(MSG_DEBUG, + " ignoring %lu extra octets after IEEE 802.1X packet", (unsigned long) len - sizeof(*hdr) - datalen); } @@ -1097,8 +1099,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, if (!hapd->conf->ieee802_1x && !hapd->conf->osen && !(sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) { - wpa_printf(MSG_DEBUG, "IEEE 802.1X: Ignore EAPOL message - " - "802.1X not enabled and WPS not used"); + wpa_printf(MSG_DEBUG, + "IEEE 802.1X: Ignore EAPOL message - 802.1X not enabled and WPS not used"); return; } @@ -1106,8 +1108,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, if (key_mgmt != -1 && (wpa_key_mgmt_wpa_psk(key_mgmt) || key_mgmt == WPA_KEY_MGMT_OWE || key_mgmt == WPA_KEY_MGMT_DPP)) { - wpa_printf(MSG_DEBUG, "IEEE 802.1X: Ignore EAPOL message - " - "STA is using PSK"); + wpa_printf(MSG_DEBUG, + "IEEE 802.1X: Ignore EAPOL message - STA is using PSK"); return; } @@ -1130,9 +1132,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, * skipped if the STA is known to support WPS * 2.0. */ - wpa_printf(MSG_DEBUG, "WPS: Do not start " - "EAPOL until EAPOL-Start is " - "received"); + wpa_printf(MSG_DEBUG, + "WPS: Do not start EAPOL until EAPOL-Start is received"); sta->eapol_sm->flags |= EAPOL_SM_WAIT_START; } } @@ -1155,15 +1156,14 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, case IEEE802_1X_TYPE_EAPOL_START: hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_DEBUG, "received EAPOL-Start " - "from STA"); + HOSTAPD_LEVEL_DEBUG, + "received EAPOL-Start from STA"); sta->eapol_sm->flags &= ~EAPOL_SM_WAIT_START; pmksa = wpa_auth_sta_get_pmksa(sta->wpa_sm); if (pmksa) { hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_WPA, - HOSTAPD_LEVEL_DEBUG, "cached PMKSA " - "available - ignore it since " - "STA sent EAPOL-Start"); + HOSTAPD_LEVEL_DEBUG, + "cached PMKSA available - ignore it since STA sent EAPOL-Start"); wpa_auth_sta_clear_pmksa(sta->wpa_sm, pmksa); } sta->eapol_sm->eapolStart = TRUE; @@ -1174,8 +1174,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, case IEEE802_1X_TYPE_EAPOL_LOGOFF: hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_DEBUG, "received EAPOL-Logoff " - "from STA"); + HOSTAPD_LEVEL_DEBUG, + "received EAPOL-Logoff from STA"); sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST; accounting_sta_stop(hapd, sta); @@ -1187,8 +1187,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf, case IEEE802_1X_TYPE_EAPOL_KEY: wpa_printf(MSG_DEBUG, " EAPOL-Key"); if (!ap_sta_is_authorized(sta)) { - wpa_printf(MSG_DEBUG, " Dropped key data from " - "unauthorized Supplicant"); + wpa_printf(MSG_DEBUG, + " Dropped key data from unauthorized Supplicant"); break; } break; @@ -1244,8 +1244,8 @@ void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta) #endif /* CONFIG_WPS */ if (!force_1x && !hapd->conf->ieee802_1x && !hapd->conf->osen) { - wpa_printf(MSG_DEBUG, "IEEE 802.1X: Ignore STA - " - "802.1X not enabled or forced for WPS"); + wpa_printf(MSG_DEBUG, + "IEEE 802.1X: Ignore STA - 802.1X not enabled or forced for WPS"); /* * Clear any possible EAPOL authenticator state to support * reassociation change from WPS to PSK. @@ -1267,11 +1267,11 @@ void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta) return; } - if (sta->eapol_sm == NULL) { + if (!sta->eapol_sm) { hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, HOSTAPD_LEVEL_DEBUG, "start authentication"); sta->eapol_sm = ieee802_1x_alloc_eapol_sm(hapd, sta); - if (sta->eapol_sm == NULL) { + if (!sta->eapol_sm) { hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, HOSTAPD_LEVEL_INFO, @@ -1290,8 +1290,8 @@ void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta) * initiates the handshake with EAPOL-Start. Only allow the * wait to be skipped if the STA is known to support WPS 2.0. */ - wpa_printf(MSG_DEBUG, "WPS: Do not start EAPOL until " - "EAPOL-Start is received"); + wpa_printf(MSG_DEBUG, + "WPS: Do not start EAPOL until EAPOL-Start is received"); sta->eapol_sm->flags |= EAPOL_SM_WAIT_START; } #endif /* CONFIG_WPS */ @@ -1387,7 +1387,7 @@ void ieee802_1x_free_station(struct hostapd_data *hapd, struct sta_info *sta) sta->pending_eapol_rx = NULL; } - if (sm == NULL) + if (!sm) return; sta->eapol_sm = NULL; @@ -1412,7 +1412,7 @@ static void ieee802_1x_decapsulate_radius(struct hostapd_data *hapd, struct radius_msg *msg; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL || sm->last_recv_radius == NULL) { + if (!sm || !sm->last_recv_radius) { if (sm) sm->eap_if->aaaEapNoReq = TRUE; return; @@ -1421,21 +1421,21 @@ static void ieee802_1x_decapsulate_radius(struct hostapd_data *hapd, msg = sm->last_recv_radius; eap = radius_msg_get_eap(msg); - if (eap == NULL) { + if (!eap) { /* RFC 3579, Chap. 2.6.3: * RADIUS server SHOULD NOT send Access-Reject/no EAP-Message * attribute */ hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_WARNING, "could not extract " - "EAP-Message from RADIUS message"); + HOSTAPD_LEVEL_WARNING, + "could not extract EAP-Message from RADIUS message"); sm->eap_if->aaaEapNoReq = TRUE; return; } if (wpabuf_len(eap) < sizeof(*hdr)) { hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_WARNING, "too short EAP packet " - "received from authentication server"); + HOSTAPD_LEVEL_WARNING, + "too short EAP packet received from authentication server"); wpabuf_free(eap); sm->eap_if->aaaEapNoReq = TRUE; return; @@ -1468,8 +1468,8 @@ static void ieee802_1x_decapsulate_radius(struct hostapd_data *hapd, } buf[sizeof(buf) - 1] = '\0'; hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_DEBUG, "decapsulated EAP packet (code=%d " - "id=%d len=%d) from RADIUS server: %s", + HOSTAPD_LEVEL_DEBUG, + "decapsulated EAP packet (code=%d id=%d len=%d) from RADIUS server: %s", hdr->code, hdr->identifier, be_to_host16(hdr->length), buf); sm->eap_if->aaaEapReq = TRUE; @@ -1489,7 +1489,8 @@ static void ieee802_1x_get_keys(struct hostapd_data *hapd, u8 *buf; size_t len; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL) + + if (!sm) return; keys = radius_msg_get_ms_keys(msg, req, shared_secret, @@ -1552,8 +1553,7 @@ static void ieee802_1x_store_radius_class(struct hostapd_data *hapd, struct radius_attr_data *nclass; size_t nclass_count; - if (!hapd->conf->radius->acct_server || hapd->radius == NULL || - sm == NULL) + if (!hapd->conf->radius->acct_server || !hapd->radius || !sm) return; radius_free_class(&sm->radius_class); @@ -1562,7 +1562,7 @@ static void ieee802_1x_store_radius_class(struct hostapd_data *hapd, return; nclass = os_calloc(count, sizeof(struct radius_attr_data)); - if (nclass == NULL) + if (!nclass) return; nclass_count = 0; @@ -1579,7 +1579,7 @@ static void ieee802_1x_store_radius_class(struct hostapd_data *hapd, } while (class_len < 1); nclass[nclass_count].data = os_memdup(attr_class, class_len); - if (nclass[nclass_count].data == NULL) + if (!nclass[nclass_count].data) break; nclass[nclass_count].len = class_len; @@ -1588,8 +1588,9 @@ static void ieee802_1x_store_radius_class(struct hostapd_data *hapd, sm->radius_class.attr = nclass; sm->radius_class.count = nclass_count; - wpa_printf(MSG_DEBUG, "IEEE 802.1X: Stored %lu RADIUS Class " - "attributes for " MACSTR, + wpa_printf(MSG_DEBUG, + "IEEE 802.1X: Stored %lu RADIUS Class attributes for " + MACSTR, (unsigned long) sm->radius_class.count, MAC2STR(sta->addr)); } @@ -1604,7 +1605,7 @@ static void ieee802_1x_update_sta_identity(struct hostapd_data *hapd, size_t len; struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL) + if (!sm) return; if (radius_msg_get_attr_ptr(msg, RADIUS_ATTR_USER_NAME, &buf, &len, @@ -1612,12 +1613,12 @@ static void ieee802_1x_update_sta_identity(struct hostapd_data *hapd, return; identity = (u8 *) dup_binstr(buf, len); - if (identity == NULL) + if (!identity) return; hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_DEBUG, "old identity '%s' updated with " - "User-Name from Access-Accept '%s'", + HOSTAPD_LEVEL_DEBUG, + "old identity '%s' updated with User-Name from Access-Accept '%s'", sm->identity ? (char *) sm->identity : "N/A", (char *) identity); @@ -1637,7 +1638,7 @@ static void ieee802_1x_update_sta_cui(struct hostapd_data *hapd, u8 *buf; size_t len; - if (sm == NULL) + if (!sm) return; if (radius_msg_get_attr_ptr(msg, RADIUS_ATTR_CHARGEABLE_USER_IDENTITY, @@ -1645,7 +1646,7 @@ static void ieee802_1x_update_sta_cui(struct hostapd_data *hapd, return; cui = wpabuf_alloc_copy(buf, len); - if (cui == NULL) + if (!cui) return; wpabuf_free(sm->radius_cui); @@ -1666,14 +1667,16 @@ static void ieee802_1x_hs20_sub_rem(struct sta_info *sta, u8 *pos, size_t len) sta->remediation_method = pos[0]; os_memcpy(sta->remediation_url, pos + 1, len - 1); sta->remediation_url[len - 1] = '\0'; - wpa_printf(MSG_DEBUG, "HS 2.0: Subscription remediation needed " - "for " MACSTR " - server method %u URL %s", + wpa_printf(MSG_DEBUG, + "HS 2.0: Subscription remediation needed for " + MACSTR " - server method %u URL %s", MAC2STR(sta->addr), sta->remediation_method, sta->remediation_url); } else { sta->remediation_url = NULL; - wpa_printf(MSG_DEBUG, "HS 2.0: Subscription remediation needed " - "for " MACSTR, MAC2STR(sta->addr)); + wpa_printf(MSG_DEBUG, + "HS 2.0: Subscription remediation needed for " + MACSTR, MAC2STR(sta->addr)); } /* TODO: assign the STA into remediation VLAN or add filtering */ } @@ -1686,8 +1689,8 @@ static void ieee802_1x_hs20_deauth_req(struct hostapd_data *hapd, if (len < 3) return; /* Malformed information */ sta->hs20_deauth_requested = 1; - wpa_printf(MSG_DEBUG, "HS 2.0: Deauthentication request - Code %u " - "Re-auth Delay %u", + wpa_printf(MSG_DEBUG, + "HS 2.0: Deauthentication request - Code %u Re-auth Delay %u", *pos, WPA_GET_LE16(pos + 1)); wpabuf_free(sta->hs20_deauth_req); sta->hs20_deauth_req = wpabuf_alloc(len + 1); @@ -1711,16 +1714,17 @@ static void ieee802_1x_hs20_session_info(struct hostapd_data *hapd, return; /* Malformed information */ os_free(sta->hs20_session_info_url); sta->hs20_session_info_url = os_malloc(len); - if (sta->hs20_session_info_url == NULL) + if (!sta->hs20_session_info_url) return; swt = pos[0]; os_memcpy(sta->hs20_session_info_url, pos + 1, len - 1); sta->hs20_session_info_url[len - 1] = '\0'; - wpa_printf(MSG_DEBUG, "HS 2.0: Session Information URL='%s' SWT=%u " - "(session_timeout=%d)", + wpa_printf(MSG_DEBUG, + "HS 2.0: Session Information URL='%s' SWT=%u (session_timeout=%d)", sta->hs20_session_info_url, swt, session_timeout); if (session_timeout < 0) { - wpa_printf(MSG_DEBUG, "HS 2.0: No Session-Timeout set - ignore session info URL"); + wpa_printf(MSG_DEBUG, + "HS 2.0: No Session-Timeout set - ignore session info URL"); return; } if (swt == 255) @@ -1853,6 +1857,7 @@ static struct eapol_state_machine * ieee802_1x_search_radius_identifier(struct hostapd_data *hapd, u8 identifier) { struct sta_id_search id_search; + id_search.identifier = identifier; id_search.sm = NULL; ap_for_each_sta(hapd, ieee802_1x_select_radius_identifier, &id_search); @@ -1923,9 +1928,9 @@ ieee802_1x_receive_auth(struct radius_msg *msg, struct radius_msg *req, struct radius_hdr *hdr = radius_msg_get_hdr(msg); sm = ieee802_1x_search_radius_identifier(hapd, hdr->identifier); - if (sm == NULL) { - wpa_printf(MSG_DEBUG, "IEEE 802.1X: Could not find matching " - "station for this RADIUS message"); + if (!sm) { + wpa_printf(MSG_DEBUG, + "IEEE 802.1X: Could not find matching station for this RADIUS message"); return RADIUS_RX_UNKNOWN; } sta = sm->sta; @@ -1936,12 +1941,12 @@ ieee802_1x_receive_auth(struct radius_msg *msg, struct radius_msg *req, radius_msg_get_attr(msg, RADIUS_ATTR_MESSAGE_AUTHENTICATOR, NULL, 0) < 0 && radius_msg_get_attr(msg, RADIUS_ATTR_EAP_MESSAGE, NULL, 0) < 0) { - wpa_printf(MSG_DEBUG, "Allowing RADIUS Access-Reject without " - "Message-Authenticator since it does not include " - "EAP-Message"); + wpa_printf(MSG_DEBUG, + "Allowing RADIUS Access-Reject without Message-Authenticator since it does not include EAP-Message"); } else if (radius_msg_verify(msg, shared_secret, shared_secret_len, req, 1)) { - wpa_printf(MSG_INFO, "Incoming RADIUS packet did not have correct Message-Authenticator - dropped"); + wpa_printf(MSG_INFO, + "Incoming RADIUS packet did not have correct Message-Authenticator - dropped"); return RADIUS_RX_INVALID_AUTHENTICATOR; } @@ -1974,8 +1979,7 @@ ieee802_1x_receive_auth(struct radius_msg *msg, struct radius_msg *req, hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, HOSTAPD_LEVEL_INFO, - "ignored too small " - "Acct-Interim-Interval %d", + "ignored too small Acct-Interim-Interval %d", acct_interim_interval); } else sta->acct_interim_interval = acct_interim_interval; @@ -2044,8 +2048,7 @@ ieee802_1x_receive_auth(struct radius_msg *msg, struct radius_msg *req, hostapd_logger(hapd, sm->addr, HOSTAPD_MODULE_IEEE8021X, HOSTAPD_LEVEL_DEBUG, - "using EAP timeout of %d seconds (from " - "RADIUS)", + "using EAP timeout of %d seconds (from RADIUS)", sm->eap_if->aaaMethodTimeout); } else { /* @@ -2084,7 +2087,8 @@ ieee802_1x_receive_auth(struct radius_msg *msg, struct radius_msg *req, void ieee802_1x_abort_auth(struct hostapd_data *hapd, struct sta_info *sta) { struct eapol_state_machine *sm = sta->eapol_sm; - if (sm == NULL) + + if (!sm) return; hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, @@ -2120,7 +2124,7 @@ static int ieee802_1x_rekey_broadcast(struct hostapd_data *hapd) os_free(eapol->default_wep_key); eapol->default_wep_key = os_malloc(hapd->conf->default_wep_key_len); - if (eapol->default_wep_key == NULL || + if (!eapol->default_wep_key || random_get_bytes(eapol->default_wep_key, hapd->conf->default_wep_key_len)) { wpa_printf(MSG_INFO, "Could not generate random WEP key"); @@ -2164,8 +2168,8 @@ static void ieee802_1x_rekey(void *eloop_ctx, void *timeout_ctx) if (ieee802_1x_rekey_broadcast(hapd)) { hostapd_logger(hapd, NULL, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_WARNING, "failed to generate a " - "new broadcast key"); + HOSTAPD_LEVEL_WARNING, + "failed to generate a new broadcast key"); os_free(eapol->default_wep_key); eapol->default_wep_key = NULL; return; @@ -2179,8 +2183,8 @@ static void ieee802_1x_rekey(void *eloop_ctx, void *timeout_ctx) eapol->default_wep_key, hapd->conf->default_wep_key_len)) { hostapd_logger(hapd, NULL, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_WARNING, "failed to configure a " - "new broadcast key"); + HOSTAPD_LEVEL_WARNING, + "failed to configure a new broadcast key"); os_free(eapol->default_wep_key); eapol->default_wep_key = NULL; return; @@ -2215,8 +2219,8 @@ static void ieee802_1x_eapol_send(void *ctx, void *sta_ctx, u8 type, (identity_len == WSC_ID_REGISTRAR_LEN && os_memcmp(identity, WSC_ID_REGISTRAR, WSC_ID_REGISTRAR_LEN) == 0))) { - wpa_printf(MSG_DEBUG, "WPS: WLAN_STA_MAYBE_WPS -> " - "WLAN_STA_WPS"); + wpa_printf(MSG_DEBUG, + "WPS: WLAN_STA_MAYBE_WPS -> WLAN_STA_WPS"); sta->flags |= WLAN_STA_WPS; } } @@ -2243,6 +2247,7 @@ static void _ieee802_1x_finished(void *ctx, void *sta_ctx, int success, { struct hostapd_data *hapd = ctx; struct sta_info *sta = sta_ctx; + if (preauth) rsn_preauth_finished(hapd, sta, success); else @@ -2260,7 +2265,7 @@ static int ieee802_1x_get_eap_user(void *ctx, const u8 *identity, int rv = -1; eap_user = hostapd_get_eap_user(hapd, identity, identity_len, phase2); - if (eap_user == NULL) + if (!eap_user) goto out; os_memset(user, 0, sizeof(*user)); @@ -2273,7 +2278,7 @@ static int ieee802_1x_get_eap_user(void *ctx, const u8 *identity, if (eap_user->password) { user->password = os_memdup(eap_user->password, eap_user->password_len); - if (user->password == NULL) + if (!user->password) goto out; user->password_len = eap_user->password_len; user->password_hash = eap_user->password_hash; @@ -2303,8 +2308,9 @@ static int ieee802_1x_sta_entry_alive(void *ctx, const u8 *addr) { struct hostapd_data *hapd = ctx; struct sta_info *sta; + sta = ap_get_sta(hapd, addr); - if (sta == NULL || sta->eapol_sm == NULL) + if (!sta || !sta->eapol_sm) return 0; return 1; } @@ -2341,6 +2347,7 @@ static void ieee802_1x_set_port_authorized(void *ctx, void *sta_ctx, { struct hostapd_data *hapd = ctx; struct sta_info *sta = sta_ctx; + ieee802_1x_set_sta_authorized(hapd, sta, authorized); } @@ -2349,6 +2356,7 @@ static void _ieee802_1x_abort_auth(void *ctx, void *sta_ctx) { struct hostapd_data *hapd = ctx; struct sta_info *sta = sta_ctx; + ieee802_1x_abort_auth(hapd, sta); } @@ -2359,6 +2367,7 @@ static void _ieee802_1x_tx_key(void *ctx, void *sta_ctx) #ifndef CONFIG_NO_RC4 struct hostapd_data *hapd = ctx; struct sta_info *sta = sta_ctx; + ieee802_1x_tx_key(hapd, sta); #endif /* CONFIG_NO_RC4 */ #endif /* CONFIG_FIPS */ @@ -2370,6 +2379,7 @@ static void ieee802_1x_eapol_event(void *ctx, void *sta_ctx, { /* struct hostapd_data *hapd = ctx; */ struct sta_info *sta = sta_ctx; + switch (type) { case EAPOL_AUTH_SM_CHANGE: wpa_auth_sm_notify(sta->wpa_sm); @@ -2446,7 +2456,7 @@ int ieee802_1x_init(struct hostapd_data *hapd) #endif /* CONFIG_ERP */ hapd->eapol_auth = eapol_auth_init(&conf, &cb); - if (hapd->eapol_auth == NULL) + if (!hapd->eapol_auth) return -1; if ((hapd->conf->ieee802_1x || hapd->conf->wpa) && @@ -2467,7 +2477,7 @@ int ieee802_1x_init(struct hostapd_data *hapd) ieee802_1x_rekey(hapd, NULL); - if (hapd->eapol_auth->default_wep_key == NULL) + if (!hapd->eapol_auth->default_wep_key) return -1; } @@ -2510,7 +2520,7 @@ int ieee802_1x_tx_status(struct hostapd_data *hapd, struct sta_info *sta, const unsigned char rfc1042_hdr[ETH_ALEN] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 }; - if (sta == NULL) + if (!sta) return -1; if (len < sizeof(*hdr) + sizeof(rfc1042_hdr) + 2) return 0; @@ -2539,8 +2549,8 @@ int ieee802_1x_eapol_tx_status(struct hostapd_data *hapd, struct sta_info *sta, if (len < (int) sizeof(*xhdr)) return 0; - wpa_printf(MSG_DEBUG, "IEEE 802.1X: " MACSTR " TX status - version=%d " - "type=%d length=%d - ack=%d", + wpa_printf(MSG_DEBUG, "IEEE 802.1X: " MACSTR + " TX status - version=%d type=%d length=%d - ack=%d", MAC2STR(sta->addr), xhdr->version, xhdr->type, be_to_host16(xhdr->length), ack); @@ -2559,6 +2569,7 @@ int ieee802_1x_eapol_tx_status(struct hostapd_data *hapd, struct sta_info *sta, if (pos + sizeof(struct wpa_eapol_key) <= buf + len) { const struct wpa_eapol_key *wpa; + wpa = (const struct wpa_eapol_key *) pos; if (wpa->type == EAPOL_KEY_TYPE_RSN || wpa->type == EAPOL_KEY_TYPE_WPA) @@ -2574,8 +2585,8 @@ int ieee802_1x_eapol_tx_status(struct hostapd_data *hapd, struct sta_info *sta, if (!ack && pos + sizeof(*key) <= buf + len) { key = (struct ieee802_1x_eapol_key *) pos; hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X, - HOSTAPD_LEVEL_DEBUG, "did not Ack EAPOL-Key " - "frame (%scast index=%d)", + HOSTAPD_LEVEL_DEBUG, + "did not Ack EAPOL-Key frame (%scast index=%d)", key->key_index & BIT(7) ? "uni" : "broad", key->key_index & ~BIT(7)); /* TODO: re-send EAPOL-Key couple of times (with short delay @@ -2595,7 +2606,7 @@ int ieee802_1x_eapol_tx_status(struct hostapd_data *hapd, struct sta_info *sta, u8 * ieee802_1x_get_identity(struct eapol_state_machine *sm, size_t *len) { - if (sm == NULL || sm->identity == NULL) + if (!sm || !sm->identity) return NULL; *len = sm->identity_len; @@ -2606,7 +2617,7 @@ u8 * ieee802_1x_get_identity(struct eapol_state_machine *sm, size_t *len) u8 * ieee802_1x_get_radius_class(struct eapol_state_machine *sm, size_t *len, int idx) { - if (sm == NULL || sm->radius_class.attr == NULL || + if (!sm || !sm->radius_class.attr || idx >= (int) sm->radius_class.count) return NULL; @@ -2617,7 +2628,7 @@ u8 * ieee802_1x_get_radius_class(struct eapol_state_machine *sm, size_t *len, struct wpabuf * ieee802_1x_get_radius_cui(struct eapol_state_machine *sm) { - if (sm == NULL) + if (!sm) return NULL; return sm->radius_cui; } @@ -2626,7 +2637,7 @@ struct wpabuf * ieee802_1x_get_radius_cui(struct eapol_state_machine *sm) const u8 * ieee802_1x_get_key(struct eapol_state_machine *sm, size_t *len) { *len = 0; - if (sm == NULL) + if (!sm) return NULL; *len = sm->eap_if->eapKeyDataLen; @@ -2651,7 +2662,7 @@ const u8 * ieee802_1x_get_session_id(struct eapol_state_machine *sm, void ieee802_1x_notify_port_enabled(struct eapol_state_machine *sm, int enabled) { - if (sm == NULL) + if (!sm) return; sm->eap_if->portEnabled = enabled ? TRUE : FALSE; eapol_auth_step(sm); @@ -2661,7 +2672,7 @@ void ieee802_1x_notify_port_enabled(struct eapol_state_machine *sm, void ieee802_1x_notify_port_valid(struct eapol_state_machine *sm, int valid) { - if (sm == NULL) + if (!sm) return; sm->portValid = valid ? TRUE : FALSE; eapol_auth_step(sm); @@ -2670,7 +2681,7 @@ void ieee802_1x_notify_port_valid(struct eapol_state_machine *sm, void ieee802_1x_notify_pre_auth(struct eapol_state_machine *sm, int pre_auth) { - if (sm == NULL) + if (!sm) return; if (pre_auth) sm->flags |= EAPOL_SM_PREAUTH; @@ -2702,7 +2713,7 @@ int ieee802_1x_get_mib_sta(struct hostapd_data *hapd, struct sta_info *sta, const char *name2; char *identity_buf = NULL; - if (sm == NULL) + if (!sm) return 0; ret = os_snprintf(buf + len, buflen - len, -- 2.39.2