diff options
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | debian/patches/series | 1 | ||||
-rw-r--r-- | debian/patches/upstream-fixes/0006-nl80211-fix-RTM-NEW-DELLINK-IFLA_IFNAME.patch | 45 | ||||
-rw-r--r-- | src/drivers/driver_nl80211.c | 4 |
4 files changed, 55 insertions, 2 deletions
diff --git a/debian/changelog b/debian/changelog index fbfb107..73e42f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +wpa (2:2.9.0-12) unstable; urgency=medium + + * Add an upstream patch to fix the MAC randomisation issue with some cards + (LP: #1867908). + + -- Andrej Shadura <andrewsh@debian.org> Tue, 24 Mar 2020 11:13:16 +0100 + wpa (2:2.9.0-11) unstable; urgency=medium * Actually add autopkgtest for libwpa-client-dev and libwpa_test.c. diff --git a/debian/patches/series b/debian/patches/series index 5d02c81..6439ca0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -12,3 +12,4 @@ upstream-fixes/0002-trace-handle-binutils-bfd.h-breakage.patch upstream-fixes/0003-check-for-ft-support.patch upstream-fixes/0004-fix-VERSION_STR-printf-calls.patch upstream-fixes/0005-common-Provide-the-BIT-macro-locally.patch +upstream-fixes/0006-nl80211-fix-RTM-NEW-DELLINK-IFLA_IFNAME.patch diff --git a/debian/patches/upstream-fixes/0006-nl80211-fix-RTM-NEW-DELLINK-IFLA_IFNAME.patch b/debian/patches/upstream-fixes/0006-nl80211-fix-RTM-NEW-DELLINK-IFLA_IFNAME.patch new file mode 100644 index 0000000..4321cba --- /dev/null +++ b/debian/patches/upstream-fixes/0006-nl80211-fix-RTM-NEW-DELLINK-IFLA_IFNAME.patch @@ -0,0 +1,45 @@ +From 7546c489a95a033c78331915fcdfa0e6fd74d563 Mon Sep 17 00:00:00 2001 +From: Ouden <Ouden.Biz@gmail.com> +Date: Wed, 18 Mar 2020 17:58:37 +0800 +Subject: nl80211: Fix RTM NEW/DELLINK IFLA_IFNAME copy for maximum ifname + length + +If the kernel rtm_newlink or rtm_dellink send the maximum length of +ifname (IFNAMSIZ), the event handlers in +wpa_driver_nl80211_event_rtm_addlink() and +wpa_driver_nl80211_event_rtm_dellink() did not copy the IFLA_IFNAME +value. Because the RTA_PAYLOAD (IFLA_IFNAME) length already includes the +NULL termination, that equals the IFNAMSIZ. + +Fix the condition when IFNAME reach maximum size. + +Signed-off-by: Ouden <Ouden.Biz@gmail.com> +--- + src/drivers/driver_nl80211.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c +index efcd69a..c071cc0 100644 +--- a/src/drivers/driver_nl80211.c ++++ b/src/drivers/driver_nl80211.c +@@ -1047,7 +1047,7 @@ static void wpa_driver_nl80211_event_rtm_newlink(void *ctx, + while (RTA_OK(attr, attrlen)) { + switch (attr->rta_type) { + case IFLA_IFNAME: +- if (RTA_PAYLOAD(attr) >= IFNAMSIZ) ++ if (RTA_PAYLOAD(attr) > IFNAMSIZ) + break; + os_memcpy(ifname, RTA_DATA(attr), RTA_PAYLOAD(attr)); + ifname[RTA_PAYLOAD(attr)] = '\0'; +@@ -1222,7 +1222,7 @@ static void wpa_driver_nl80211_event_rtm_dellink(void *ctx, + while (RTA_OK(attr, attrlen)) { + switch (attr->rta_type) { + case IFLA_IFNAME: +- if (RTA_PAYLOAD(attr) >= IFNAMSIZ) ++ if (RTA_PAYLOAD(attr) > IFNAMSIZ) + break; + os_memcpy(ifname, RTA_DATA(attr), RTA_PAYLOAD(attr)); + ifname[RTA_PAYLOAD(attr)] = '\0'; +-- +cgit v0.12 + diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 0a356ee..47df47f 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -1065,7 +1065,7 @@ static void wpa_driver_nl80211_event_rtm_newlink(void *ctx, while (RTA_OK(attr, attrlen)) { switch (attr->rta_type) { case IFLA_IFNAME: - if (RTA_PAYLOAD(attr) >= IFNAMSIZ) + if (RTA_PAYLOAD(attr) > IFNAMSIZ) break; os_memcpy(ifname, RTA_DATA(attr), RTA_PAYLOAD(attr)); ifname[RTA_PAYLOAD(attr)] = '\0'; @@ -1240,7 +1240,7 @@ static void wpa_driver_nl80211_event_rtm_dellink(void *ctx, while (RTA_OK(attr, attrlen)) { switch (attr->rta_type) { case IFLA_IFNAME: - if (RTA_PAYLOAD(attr) >= IFNAMSIZ) + if (RTA_PAYLOAD(attr) > IFNAMSIZ) break; os_memcpy(ifname, RTA_DATA(attr), RTA_PAYLOAD(attr)); ifname[RTA_PAYLOAD(attr)] = '\0'; |