Loading net/mac80211/util.c +6 −19 Original line number Diff line number Diff line Loading @@ -895,8 +895,7 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, struct ieee802_11_elems *elems, u64 filter, u32 crc) { size_t left = len; const u8 *pos = start; struct element *elem; bool calc_crc = filter != 0; DECLARE_BITMAP(seen_elems, 256); const u8 *ie; Loading @@ -906,18 +905,11 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, elems->ie_start = start; elems->total_len = len; while (left >= 2) { u8 id, elen; for_each_element(elem, start, len) { bool elem_parse_failed; id = *pos++; elen = *pos++; left -= 2; if (elen > left) { elems->parse_error = true; break; } u8 id = elem->id; u8 elen = elem->datalen; const u8 *pos = elem->data; switch (id) { case WLAN_EID_SSID: Loading Loading @@ -960,8 +952,6 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, */ if (test_bit(id, seen_elems)) { elems->parse_error = true; left -= elen; pos += elen; continue; } break; Loading Loading @@ -1244,12 +1234,9 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, elems->parse_error = true; else __set_bit(id, seen_elems); left -= elen; pos += elen; } if (left != 0) if (!for_each_element_completed(elem, start, len)) elems->parse_error = true; return crc; Loading Loading
net/mac80211/util.c +6 −19 Original line number Diff line number Diff line Loading @@ -895,8 +895,7 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, struct ieee802_11_elems *elems, u64 filter, u32 crc) { size_t left = len; const u8 *pos = start; struct element *elem; bool calc_crc = filter != 0; DECLARE_BITMAP(seen_elems, 256); const u8 *ie; Loading @@ -906,18 +905,11 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, elems->ie_start = start; elems->total_len = len; while (left >= 2) { u8 id, elen; for_each_element(elem, start, len) { bool elem_parse_failed; id = *pos++; elen = *pos++; left -= 2; if (elen > left) { elems->parse_error = true; break; } u8 id = elem->id; u8 elen = elem->datalen; const u8 *pos = elem->data; switch (id) { case WLAN_EID_SSID: Loading Loading @@ -960,8 +952,6 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, */ if (test_bit(id, seen_elems)) { elems->parse_error = true; left -= elen; pos += elen; continue; } break; Loading Loading @@ -1244,12 +1234,9 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action, elems->parse_error = true; else __set_bit(id, seen_elems); left -= elen; pos += elen; } if (left != 0) if (!for_each_element_completed(elem, start, len)) elems->parse_error = true; return crc; Loading