diff --git a/openwrt/package/hostapd/Makefile b/openwrt/package/hostapd/Makefile index 7ac6770fc8b..e7b42dc4a3b 100644 --- a/openwrt/package/hostapd/Makefile +++ b/openwrt/package/hostapd/Makefile @@ -3,9 +3,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:=hostapd -PKG_VERSION:=0.4.7 +PKG_VERSION:=0.5.1 PKG_RELEASE:=1 -PKG_MD5SUM:=b299211691fe8a6840e7adafda351d2b +PKG_MD5SUM:=3e38533604187e291f45a2f6873b71cc PKG_SOURCE_URL:=http://hostap.epitest.fi/releases/ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/openwrt/package/hostapd/patches/100-wpa_fix.patch b/openwrt/package/hostapd/patches/100-wpa_fix.patch deleted file mode 100644 index 502167cbd38..00000000000 --- a/openwrt/package/hostapd/patches/100-wpa_fix.patch +++ /dev/null @@ -1,58 +0,0 @@ ---- hostapd-0.4.7/driver_madwifi.c 2006-01-30 10:00:44.199096000 -0800 -+++ hostapd-0.4.7-new/driver_madwifi.c 2006-01-30 10:05:55.925511000 -0800 -@@ -692,6 +692,7 @@ - struct hostapd_data *hapd = drv->hapd; - struct ieee80211req_wpaie ie; - int ielen, res; -+ int rsn = 0; - - /* - * Fetch negotiated WPA/RSN parameters from the system. -@@ -702,26 +703,37 @@ - printf("Failed to get WPA/RSN information element.\n"); - return -1; /* XXX not right */ - } -- ielen = ie.wpa_ie[1]; -- if (ielen == 0) { -+ if ((ie.wpa_ie[1] == 0) && (ie.rsn_ie[1] == 0)){ - printf("No WPA/RSN information element for station!?\n"); - return -1; /* XXX not right */ - } -+ ielen = ie.rsn_ie[1]; - ielen += 2; -- res = wpa_validate_wpa_ie(hapd, sta, ie.wpa_ie, ielen, -- ie.wpa_ie[0] == WLAN_EID_RSN ? -- HOSTAPD_WPA_VERSION_WPA2 : HOSTAPD_WPA_VERSION_WPA); -- if (res != WPA_IE_OK) { -- printf("WPA/RSN information element rejected? (res %u)\n", res); -- return -1; -- } -+ res = wpa_validate_wpa_ie(hapd, sta, ie.rsn_ie, ielen, -+ HOSTAPD_WPA_VERSION_WPA2); -+ if (res != WPA_IE_OK){ -+ // now look for WPA IE -+ ielen = ie.wpa_ie[1]; -+ ielen += 2; -+ res = wpa_validate_wpa_ie(hapd, sta, ie.wpa_ie, ielen, -+ HOSTAPD_WPA_VERSION_WPA); -+ if (res != WPA_IE_OK) { -+ printf("WPA/RSN information element rejected? (res %u)\n", res); -+ return -1; -+ } -+ } else { -+ rsn = 1; -+ } - free(sta->wpa_ie); - sta->wpa_ie = malloc(ielen); - if (sta->wpa_ie == NULL) { - printf("No memory to save WPA/RSN information element!\n"); - return -1; - } -- memcpy(sta->wpa_ie, ie.wpa_ie, ielen); -+ if (rsn) -+ memcpy(sta->wpa_ie, ie.rsn_ie, ielen); -+ else -+ memcpy(sta->wpa_ie, ie.wpa_ie, ielen); - sta->wpa_ie_len = ielen; - return 0; - }