From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sun, 31 Oct 2010 13:49:34 +0000 (+0000)
Subject: hostapd: move the madwifi segfault fix to the right place
X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/a1b087b6817e0d82b92ce55217c77ae7ed36f73e

hostapd: move the madwifi segfault fix to the right place

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23738 3c298f89-4303-0410-b956-a3cf2f4a3e73
---

diff --git a/package/hostapd/patches/330-madwifi_merge.patch b/package/hostapd/patches/330-madwifi_merge.patch
index f35eab386..cddffe4b9 100644
--- a/package/hostapd/patches/330-madwifi_merge.patch
+++ b/package/hostapd/patches/330-madwifi_merge.patch
@@ -336,7 +336,7 @@
 -	return 0;
 -}
 -
- static int
+-static int
 -set80211param(struct wpa_driver_madwifi_data *drv, int op, int arg,
 -	      int show_err)
 -{
@@ -355,7 +355,7 @@
 -	return 0;
 -}
 -
--static int
+ static int
 -wpa_driver_madwifi_set_wpa_ie(struct wpa_driver_madwifi_data *drv,
 +wpa_driver_madwifi_set_wpa_ie(struct madwifi_driver_data *drv,
  			      const u8 *wpa_ie, size_t wpa_ie_len)
@@ -627,7 +627,7 @@
  	return wpa_driver_wext_get_ssid(drv->wext, ssid);
  }
  
-@@ -1705,14 +1481,14 @@ static int wpa_driver_madwifi_get_ssid(v
+@@ -1705,14 +1481,16 @@ static int wpa_driver_madwifi_get_ssid(v
  static struct wpa_scan_results *
  wpa_driver_madwifi_get_scan_results(void *priv)
  {
@@ -641,10 +641,12 @@
  {
 -	struct wpa_driver_madwifi_data *drv = priv;
 +	struct madwifi_driver_data *drv = priv;
++	if (!drv->wext)
++		return 0;
  	return wpa_driver_wext_set_operstate(drv->wext, state);
  }
  
-@@ -1733,7 +1509,7 @@ static int wpa_driver_madwifi_set_probe_
+@@ -1733,7 +1511,7 @@ static int wpa_driver_madwifi_set_probe_
  
  	ret = set80211priv(priv, IEEE80211_IOCTL_SET_APPIEBUF, probe_req_ie,
  			   sizeof(struct ieee80211req_getset_appiebuf) +
@@ -653,7 +655,7 @@
  
  	os_free(probe_req_ie);
  
-@@ -1743,7 +1519,7 @@ static int wpa_driver_madwifi_set_probe_
+@@ -1743,7 +1521,7 @@ static int wpa_driver_madwifi_set_probe_
  
  static void * wpa_driver_madwifi_init(void *ctx, const char *ifname)
  {
@@ -662,7 +664,7 @@
  
  	drv = os_zalloc(sizeof(*drv));
  	if (drv == NULL)
-@@ -1754,17 +1530,17 @@ static void * wpa_driver_madwifi_init(vo
+@@ -1754,17 +1532,17 @@ static void * wpa_driver_madwifi_init(vo
  
  	drv->ctx = ctx;
  	os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
@@ -684,7 +686,7 @@
  		wpa_printf(MSG_DEBUG, "%s: failed to enable WPA support",
  			   __FUNCTION__);
  		goto fail3;
-@@ -1773,7 +1549,7 @@ static void * wpa_driver_madwifi_init(vo
+@@ -1773,7 +1551,7 @@ static void * wpa_driver_madwifi_init(vo
  	return drv;
  
  fail3:
@@ -693,7 +695,7 @@
  fail2:
  	wpa_driver_wext_deinit(drv->wext);
  fail:
-@@ -1784,38 +1560,37 @@ fail:
+@@ -1784,38 +1562,37 @@ fail:
  
  static void wpa_driver_madwifi_deinit(void *priv)
  {
@@ -739,7 +741,7 @@
  #ifdef HOSTAPD
  	.hapd_init		= madwifi_init,
  	.hapd_deinit		= madwifi_deinit,
-@@ -1835,7 +1610,8 @@ const struct wpa_driver_ops wpa_driver_m
+@@ -1835,7 +1612,8 @@ const struct wpa_driver_ops wpa_driver_m
  	.sta_clear_stats        = madwifi_sta_clear_stats,
  	.commit			= madwifi_commit,
  	.set_ap_wps_ie		= madwifi_set_ap_wps_ie,
@@ -749,7 +751,7 @@
  	.get_bssid		= wpa_driver_madwifi_get_bssid,
  	.get_ssid		= wpa_driver_madwifi_get_ssid,
  	.init			= wpa_driver_madwifi_init,
-@@ -1847,5 +1623,5 @@ const struct wpa_driver_ops wpa_driver_m
+@@ -1847,5 +1625,5 @@ const struct wpa_driver_ops wpa_driver_m
  	.disassociate		= wpa_driver_madwifi_disassociate,
  	.associate		= wpa_driver_madwifi_associate,
  	.set_operstate		= wpa_driver_madwifi_set_operstate,
diff --git a/package/hostapd/patches/460-oper_state_fix.patch b/package/hostapd/patches/460-oper_state_fix.patch
index 8ea0e1236..5a685a23e 100644
--- a/package/hostapd/patches/460-oper_state_fix.patch
+++ b/package/hostapd/patches/460-oper_state_fix.patch
@@ -23,25 +23,3 @@ DORMANT state does not prevent normal operations after that.
  	return 0;
  }
  
---- a/src/drivers/driver_wext.c
-+++ b/src/drivers/driver_wext.c
-@@ -2245,11 +2245,14 @@ int wpa_driver_wext_set_operstate(void *
- {
- 	struct wpa_driver_wext_data *drv = priv;
- 
--	wpa_printf(MSG_DEBUG, "%s: operstate %d->%d (%s)",
--		   __func__, drv->operstate, state, state ? "UP" : "DORMANT");
--	drv->operstate = state;
--	return netlink_send_oper_ifla(drv->netlink, drv->ifindex, -1,
--				      state ? IF_OPER_UP : IF_OPER_DORMANT);
-+	if (drv != NULL)
-+	{
-+		wpa_printf(MSG_DEBUG, "%s: operstate %d->%d (%s)",
-+			   __func__, drv->operstate, state, state ? "UP" : "DORMANT");
-+		drv->operstate = state;
-+		return netlink_send_oper_ifla(drv->netlink, drv->ifindex, -1,
-+					      state ? IF_OPER_UP : IF_OPER_DORMANT);
-+	}
- }
- 
-