From: "Vivek Das Mohapatra" <vivek@collabora.com>
To: iwd@lists.linux.dev
Subject: [PATCH 2/2] mpdu: tolerate technically illegal but harmless cloned IEs
Date: Sat, 5 Oct 2024 03:19:29 +0100 [thread overview]
Message-ID: <20241005021929.2075817-3-vivek@collabora.com> (raw)
In-Reply-To: <20241005021929.2075817-1-vivek@collabora.com>
---
src/ie.h | 17 +++++++++++++++++
src/mpdu.c | 10 +++++++++-
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/ie.h b/src/ie.h
index 4498785a..bc750696 100644
--- a/src/ie.h
+++ b/src/ie.h
@@ -598,6 +598,23 @@ static inline const unsigned char *ie_tlv_iter_get_data(
return iter->data;
}
+static inline bool ie_tlv_iter_data_eq(struct ie_tlv_iter *a,
+ struct ie_tlv_iter *b)
+{
+ if (a == b)
+ return true;
+
+ if (a == NULL || b == NULL)
+ return false;
+
+ if (ie_tlv_iter_get_length(a) != ie_tlv_iter_get_length(b))
+ return false;
+
+ return memcmp(ie_tlv_iter_get_data(a),
+ ie_tlv_iter_get_data(b),
+ ie_tlv_iter_get_length(a)) == 0;
+}
+
void *ie_tlv_extract_wsc_payload(const uint8_t *ies, size_t len,
ssize_t *out_len);
void *ie_tlv_encapsulate_wsc_payload(const uint8_t *data, size_t len,
diff --git a/src/mpdu.c b/src/mpdu.c
index 9d0409d2..09df696e 100644
--- a/src/mpdu.c
+++ b/src/mpdu.c
@@ -398,9 +398,17 @@ static bool validate_mgmt_ies(const uint8_t *ies, size_t ies_len,
memcpy(&clone, &iter, sizeof(clone));
+ /*
+ * Some APs send completely identical duplicate IEs:
+ * Since these are harmless (and ignored by us) we're
+ * going to allow them here for interoperability.
+ */
while (ie_tlv_iter_next(&clone)) {
- if (ie_tlv_iter_get_tag(&clone) != tag)
+ if (ie_tlv_iter_get_tag(&clone) != tag) {
continue;
+ } else if (ie_tlv_iter_data_eq(&iter, &clone)) {
+ continue;
+ }
return false;
}
--
2.30.2
next prev parent reply other threads:[~2024-10-05 2:20 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-02 17:08 Interop problem with Quantum Fiber WiFi7 pods (duplicate RSNXE IE) Vivek Das Mohapatra
2024-10-02 17:40 ` James Prestwood
2024-10-02 18:14 ` Denis Kenzior
2024-10-02 21:41 ` Vivek Das Mohapatra
2024-10-02 21:55 ` Vivek Das Mohapatra
2024-10-03 12:17 ` James Prestwood
2024-10-04 2:58 ` Denis Kenzior
2024-10-04 11:45 ` Vivek Das Mohapatra
2024-10-05 2:19 ` RFC: Be more lenient about duplicate IEs with identical payloads Vivek Das Mohapatra
2024-10-05 2:19 ` [PATCH 1/2] unit: add a test for harmless IE clones Vivek Das Mohapatra
2024-10-07 18:26 ` Denis Kenzior
2024-10-05 2:19 ` Vivek Das Mohapatra [this message]
2024-10-07 18:27 ` [PATCH 2/2] mpdu: tolerate technically illegal but harmless cloned IEs Denis Kenzior
2024-10-07 18:29 ` Vivek Das Mohapatra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241005021929.2075817-3-vivek@collabora.com \
--to=vivek@collabora.com \
--cc=iwd@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.