[PATCH v2] WPS 2.0: Update authorized enrollee MAC address list correctly
Amitkumar Karwar
akarwar
Tue Nov 27 05:36:35 PST 2012
From: Amitkumar Karwar <akarwar at marvell.com>
Sometimes both wildcard and specific MAC addresses are included by
registrar in AuthorizedMACs subelement. This patch makes sure that
only one of them will be present.
Signed-off-by: Amitkumar Karwar <akarwar at marvell.com>
---
v2: modify patch description (Jouni Malinen)
src/wps/wps_registrar.c | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c
index d8e0d6f..d376f8d 100644
--- a/src/wps/wps_registrar.c
+++ b/src/wps/wps_registrar.c
@@ -198,6 +198,8 @@ static void wps_registrar_add_authorized_mac(struct wps_registrar *reg,
const u8 *addr)
{
int i;
+ u8 bcast[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+
wpa_printf(MSG_DEBUG, "WPS: Add authorized MAC " MACSTR,
MAC2STR(addr));
for (i = 0; i < WPS_MAX_AUTHORIZED_MACS; i++)
@@ -206,9 +208,25 @@ static void wps_registrar_add_authorized_mac(struct wps_registrar *reg,
"already in the list");
return; /* already in list */
}
- for (i = WPS_MAX_AUTHORIZED_MACS - 1; i > 0; i--)
- os_memcpy(reg->authorized_macs[i], reg->authorized_macs[i - 1],
- ETH_ALEN);
+
+ if (os_memcmp(addr, bcast, ETH_ALEN) == 0) {
+ /*
+ * Clear authorized MAC address list while adding wildcard MAC
+ */
+ for (i = 0; i < WPS_MAX_AUTHORIZED_MACS; i++)
+ os_memset(reg->authorized_macs[0], 0x00, ETH_ALEN);
+ } else {
+ /* Remove wildcard MAC when valid MAC address is added */
+ if (os_memcmp(reg->authorized_macs[0], bcast, ETH_ALEN) == 0) {
+ os_memset(reg->authorized_macs[0], 0x00, ETH_ALEN);
+ } else {
+ for (i = WPS_MAX_AUTHORIZED_MACS - 1; i > 0; i--)
+ os_memcpy(reg->authorized_macs[i],
+ reg->authorized_macs[i - 1],
+ ETH_ALEN);
+ }
+
+ }
os_memcpy(reg->authorized_macs[0], addr, ETH_ALEN);
wpa_hexdump(MSG_DEBUG, "WPS: Authorized MACs",
(u8 *) reg->authorized_macs, sizeof(reg->authorized_macs));
--
1.7.3.4
More information about the Hostap
mailing list