summaryrefslogtreecommitdiffstats
path: root/target/linux/package/madwifi/patches/103-wpa_crash.patch
blob: e2ea7171fba1754806ac384f3f920b96831ba6ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
diff -ru madwifi-ng-r1451-20060212/net80211/ieee80211_ioctl.h madwifi-ng-r1451-20060212-patch/net80211/ieee80211_ioctl.h
--- madwifi-ng-r1451-20060212/net80211/ieee80211_ioctl.h	2006-02-06 11:03:21.000000000 -0500
+++ madwifi-ng-r1451-20060212-patch/net80211/ieee80211_ioctl.h	2006-02-16 06:05:22.000000000 -0500
@@ -280,6 +280,7 @@
 struct ieee80211req_wpaie {
 	u_int8_t	wpa_macaddr[IEEE80211_ADDR_LEN];
 	u_int8_t	wpa_ie[IEEE80211_MAX_OPT_IE];
+	u_int8_t	rsn_ie[IEEE80211_MAX_OPT_IE];
 };
 
 /*
diff -ru madwifi-ng-r1451-20060212/net80211/ieee80211_wireless.c madwifi-ng-r1451-20060212-patch/net80211/ieee80211_wireless.c
--- madwifi-ng-r1451-20060212/net80211/ieee80211_wireless.c	2006-02-06 12:39:10.000000000 -0500
+++ madwifi-ng-r1451-20060212-patch/net80211/ieee80211_wireless.c	2006-02-16 06:05:22.000000000 -0500
@@ -3231,6 +3231,12 @@
 			ielen = sizeof(wpaie.wpa_ie);
 		memcpy(wpaie.wpa_ie, ni->ni_wpa_ie, ielen);
 	}
+	if (ni->ni_rsn_ie != NULL) {
+		int ielen = ni->ni_rsn_ie[1] + 2;
+		if (ielen > sizeof(wpaie.rsn_ie))
+			ielen = sizeof(wpaie.rsn_ie);
+		memcpy(wpaie.rsn_ie, ni->ni_rsn_ie, ielen);
+	}
 	ieee80211_free_node(ni);
 	return (copy_to_user(iwr->u.data.pointer, &wpaie, sizeof(wpaie)) ?
 		-EFAULT : 0);