]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
nl80211: Simplify event processing error paths
authorJouni Malinen <j@w1.fi>
Mon, 5 Jan 2015 11:40:07 +0000 (13:40 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 5 Jan 2015 11:40:07 +0000 (13:40 +0200)
These are practically unreachable code since cfg80211 fills in the
required attributes or does not send the event. Keep the checks in
place, but minimize the extra code in wpa_supplicant/hostapd.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/drivers/driver_nl80211_event.c

index 85769d8015ca948f0a41760ff4d755979411a8bc..d5550339b5d750a72bc0ce08938e26e61245b2c8 100644 (file)
@@ -180,34 +180,23 @@ static void mlme_event_auth(struct wpa_driver_nl80211_data *drv,
 }
 
 
-static int nl80211_parse_wmm_params(struct nlattr *wmm_attr,
-                                   struct wmm_params *wmm_params)
+static void nl80211_parse_wmm_params(struct nlattr *wmm_attr,
+                                    struct wmm_params *wmm_params)
 {
        struct nlattr *wmm_info[NL80211_STA_WME_MAX + 1];
        static struct nla_policy wme_policy[NL80211_STA_WME_MAX + 1] = {
                [NL80211_STA_WME_UAPSD_QUEUES] = { .type = NLA_U8 },
        };
 
-       if (!wmm_attr) {
-               wpa_printf(MSG_DEBUG, "nl80211: WMM data missing");
-               return -1;
-       }
-
-       if (nla_parse_nested(wmm_info, NL80211_STA_WME_MAX, wmm_attr,
-                            wme_policy)) {
-               wpa_printf(MSG_DEBUG,
-                          "nl80211: Failed to parse nested attributes");
-               return -1;
-       }
-
-       if (!wmm_info[NL80211_STA_WME_UAPSD_QUEUES])
-               return -1;
+       if (!wmm_attr ||
+           nla_parse_nested(wmm_info, NL80211_STA_WME_MAX, wmm_attr,
+                            wme_policy) ||
+           !wmm_info[NL80211_STA_WME_UAPSD_QUEUES])
+               return;
 
        wmm_params->uapsd_queues =
                nla_get_u8(wmm_info[NL80211_STA_WME_UAPSD_QUEUES]);
        wmm_params->info_bitmap |= WMM_PARAMS_UAPSD_QUEUES_INFO;
-
-       return 0;
 }
 
 
@@ -1104,10 +1093,8 @@ static void nl80211_new_peer_candidate(struct wpa_driver_nl80211_data *drv,
        const u8 *addr;
        union wpa_event_data data;
 
-       if (drv->nlmode != NL80211_IFTYPE_MESH_POINT)
-               return;
-
-       if (!tb[NL80211_ATTR_MAC] || !tb[NL80211_ATTR_IE])
+       if (drv->nlmode != NL80211_IFTYPE_MESH_POINT ||
+           !tb[NL80211_ATTR_MAC] || !tb[NL80211_ATTR_IE])
                return;
 
        addr = nla_data(tb[NL80211_ATTR_MAC]);
@@ -1201,14 +1188,11 @@ static void nl80211_rekey_offload_event(struct wpa_driver_nl80211_data *drv,
        };
        union wpa_event_data data;
 
-       if (!tb[NL80211_ATTR_MAC])
-               return;
-       if (!tb[NL80211_ATTR_REKEY_DATA])
-               return;
-       if (nla_parse_nested(rekey_info, MAX_NL80211_REKEY_DATA,
-                            tb[NL80211_ATTR_REKEY_DATA], rekey_policy))
-               return;
-       if (!rekey_info[NL80211_REKEY_DATA_REPLAY_CTR])
+       if (!tb[NL80211_ATTR_MAC] ||
+           !tb[NL80211_ATTR_REKEY_DATA] ||
+           nla_parse_nested(rekey_info, MAX_NL80211_REKEY_DATA,
+                            tb[NL80211_ATTR_REKEY_DATA], rekey_policy) ||
+           !rekey_info[NL80211_REKEY_DATA_REPLAY_CTR])
                return;
 
        os_memset(&data, 0, sizeof(data));
@@ -1239,12 +1223,10 @@ static void nl80211_pmksa_candidate_event(struct wpa_driver_nl80211_data *drv,
 
        wpa_printf(MSG_DEBUG, "nl80211: PMKSA candidate event");
 
-       if (!tb[NL80211_ATTR_PMKSA_CANDIDATE])
-               return;
-       if (nla_parse_nested(cand, MAX_NL80211_PMKSA_CANDIDATE,
-                            tb[NL80211_ATTR_PMKSA_CANDIDATE], cand_policy))
-               return;
-       if (!cand[NL80211_PMKSA_CANDIDATE_INDEX] ||
+       if (!tb[NL80211_ATTR_PMKSA_CANDIDATE] ||
+           nla_parse_nested(cand, MAX_NL80211_PMKSA_CANDIDATE,
+                            tb[NL80211_ATTR_PMKSA_CANDIDATE], cand_policy) ||
+           !cand[NL80211_PMKSA_CANDIDATE_INDEX] ||
            !cand[NL80211_PMKSA_CANDIDATE_BSSID])
                return;
 
@@ -1502,10 +1484,8 @@ static void qca_nl80211_acs_select_ch(struct wpa_driver_nl80211_data *drv,
                   "nl80211: ACS channel selection vendor event received");
 
        if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_ACS_MAX,
-                     (struct nlattr *) data, len, NULL))
-               return;
-
-       if (!tb[QCA_WLAN_VENDOR_ATTR_ACS_PRIMARY_CHANNEL] ||
+                     (struct nlattr *) data, len, NULL) ||
+           !tb[QCA_WLAN_VENDOR_ATTR_ACS_PRIMARY_CHANNEL] ||
            !tb[QCA_WLAN_VENDOR_ATTR_ACS_SECONDARY_CHANNEL])
                return;
 
@@ -1529,9 +1509,8 @@ static void qca_nl80211_key_mgmt_auth(struct wpa_driver_nl80211_data *drv,
                   "nl80211: Key management roam+auth vendor event received");
 
        if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_MAX,
-                     (struct nlattr *) data, len, NULL))
-               return;
-       if (!tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID] ||
+                     (struct nlattr *) data, len, NULL) ||
+           !tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID] ||
            nla_len(tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID]) != ETH_ALEN ||
            !tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_REQ_IE] ||
            !tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_RESP_IE] ||