aboutsummaryrefslogtreecommitdiffstats
path: root/hostapd
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2015-01-12 13:01:47 -0800
committerDmitry Shmidt <dimitrysh@google.com>2015-01-15 12:54:35 -0800
commitff787d557db719adea0fdf2679667500c65cf74d (patch)
tree5120331fc1f3b809bb3f241fcfff9486e1980da8 /hostapd
parent6c0da2bb83f6915d8260912362692d1a742e057b (diff)
downloadandroid_external_wpa_supplicant_8-ff787d557db719adea0fdf2679667500c65cf74d.tar.gz
android_external_wpa_supplicant_8-ff787d557db719adea0fdf2679667500c65cf74d.tar.bz2
android_external_wpa_supplicant_8-ff787d557db719adea0fdf2679667500c65cf74d.zip
Cumulative patch from commit 3e7f1c7980c6e9fc7173f78aa72b2761fcd8924d (DO NOT MERGE)
3e7f1c7 GnuTLS: Add TLS event callbacks for chain success/failure and peer cert 0eb2ed0 GnuTLS: Add support for OCSP stapling as a client cf08e9b Add MESH to modes capabilities db5adfe Add SAE to auth_alg capabilities 0e1bb94 GnuTLS: Verify that server certificate EKU is valid for a server d4d1f5c GnuTLS: Fix tls_disable_time_checks=1 processing 594d1fc GnuTLS: Add support for private_key and client_cert as blobs 79b1dd9 GnuTLS: Fix DER encoding certificate parsing a165145 Add "GET tls_library" to provide information on TLS library and version c3bb84b GnuTLS: Add event callbacks 8ddcd6b GnuTLS: Add support for domain_suffix_match 4bc13bf GnuTLS: Check for any unknown verification failure e0d431a GnuTLS: Add more debug prints for version and session status 65ec7f4 GnuTLS: Move peer certificate validation into callback function 7c82457 GnuTLS: Remove support for versions older than 2.12.x e1d63f6 GnuTLS: Remove old version number checks for 1.3.2 ae0a23a GnuTLS: Remove GNUTLS_INTERNAL_STRUCTURE_HACK db4cf40 GnuTLS: Add support for ca_cert as a blob 224104d TLS: Reject openssl_ciphers parameter in non-OpenSSL cases b09baf3 Work around Windows build issues 6dbbef9 Define host_to_le32() for Windows builds 7d28e46 Fix os_win32 build 0b40247 Remove Network Security Service (NSS) support d166947 schannel: Reject subject_match, altsubject_match, suffix_match 59051f8 TLS: Reject subject_match, altsubject_match, suffix_match f8717ac GnuTLS: Reject subject_match, altsubject_match, suffix_match e24aef1 Fix a typo in domain_suffix_match documentation 394b547 Improve subject_match and domain_suffix_match documentation 8a42a07 trace: Fix out-of-memory testing logic 79cd993 Add address masks to BSSID lists b83e455 Add network specific BSSID black and white lists b3d6a0a Add generic parser for MAC address lists 21c74e8 nl80211: Use a helper function to put mesh_id 85e1fad nl80211: Use a helper function for putting beacon interval 6dfc557 Remove mesh_ht_mode network block parameter 54fe48b mesh: Use the shared function with IBSS to determine channel parameters f7e889f mesh: Convert channel configuration to use common routines 6334330 mesh: Use a separate variable to track whether HT is enabled 1fc4ab2 nl80211: Move debug prints into nl80211_put_freq_params() cae87ab nl80211: Add a helper function for putting basic rates 6b8b077 ibss/mesh: Enable HT40 if supported a828f62 Make check_40mhz_2g4 common fdd989d Make check_20mhz_bss common 0e550fe Make check_40mhz_5g common 6d5d098 Make get_pri_sec_chan() common 5144274 Introduce common allowed_ht40_channel_pair() 5f10b7f Use common hw_get_freq/hw_get_chan helpers in hostapd 269dfe2 Introduce common hw features 1830817 IBSS: Add WPA_DRIVER_FLAGS_HT_IBSS f3b8ad4 SAE: Implement retransmission timer a206e2a SAE: Centralize function for sending initial COMMIT 28c91ee bsd: Fix parsing of ieee80211req_scan_result on FreeBSD and DragonFly 96d1d97 Android: Remove hardcoded ICU include paths from hs20-osu-client a354bcc D-Bus: Use NoMemory error message from CreateInterface 635874b Handle interface disabled/enabled more consistently 8f2cf37 P2P: Indicate reason=UNAVAILABLE for group netdev going down 86a7fbb Verify that eloop_register_read_sock() succeeds for ctrl_iface setup 27d9701 Fix a memory leak on WPA authenticator error path c1c07dc Fix hostapd interface addition error path a156ffd Add support for testing memory allocation failures 52b3943 D-Bus: Fix interface unregistration on error path 96dc9a6 D-Bus (old): Fix interface unregistration on error path ef03557 Fix memory leak on wpa_supplicant_init_wpa() error path 52a8058 TDLS: Fix an interface addition error path f2d5728 D-Bus: Fix string array dict entry parser in out-of-memory case c61bc23 D-Bus: Fix byte array dict entry parser in out-of-memory case dacf605 D-Bus: Fix Introspect() in case of os_strdup() failure 68a8669 D-Bus (old): Fix wpsReg error message f0614bc D-Bus (old): Fix message handler error paths a2af1c7 D-Bus (old): Fix memory leak on error path 3d2e2d5 trace: Fix compiler warning on 32-bit builds with bfd support b9f6560 eloop: Fix WPA_TRACE tracking in case of realloc failure e10422c Fix memory leak on hostapd BSS addition error path 2801659 Fix hostapd initialization error path on allocation failure d58ade2 nl80211: Fix compilation with libnl 1.1 and 2.0 51f3427 crypto: Clear temporary stack buffers after use 77a2c39 crypto: Clear temporary heap allocations before freeing a15a7fc DH: Clear memory explicitly on private key deinit 77c45e2 Add wpabuf_clear_free() to allow clearing of freed memory a90c7d9 OpenSSL: Fix pbkdf2_sha1() wrapper f6ebbcf AES-SIV: Make aes_s2v() static dcf8fbc nl80211: Simplify event processing error paths 38751d8 nl80211: Remove cfg80211 state mismatch workaround for authentication 64ae244 nl80211: Check support for rekey offload on first use Change-Id: Ice94c3cf8e39a6d2cac993aacd0f6d45b31c7c15 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'hostapd')
-rw-r--r--hostapd/Android.mk17
-rw-r--r--hostapd/Makefile18
-rw-r--r--hostapd/ctrl_iface.c59
3 files changed, 60 insertions, 34 deletions
diff --git a/hostapd/Android.mk b/hostapd/Android.mk
index d6d04c5f..4e6a36ee 100644
--- a/hostapd/Android.mk
+++ b/hostapd/Android.mk
@@ -134,6 +134,7 @@ OBJS += src/utils/ip_addr.c
OBJS += src/common/ieee802_11_common.c
OBJS += src/common/wpa_common.c
+OBJS += src/common/hw_features_common.c
OBJS += src/eapol_auth/eapol_auth_sm.c
@@ -565,22 +566,6 @@ CONFIG_INTERNAL_RC4=y
CONFIG_INTERNAL_DH_GROUP5=y
endif
-ifeq ($(CONFIG_TLS), nss)
-ifdef TLS_FUNCS
-OBJS += src/crypto/tls_nss.c
-LIBS += -lssl3
-endif
-OBJS += src/crypto/crypto_nss.c
-ifdef NEED_FIPS186_2_PRF
-OBJS += src/crypto/fips_prf_internal.c
-OBJS += src/crypto/sha1-internal.c
-endif
-LIBS += -lnss3
-LIBS_h += -lnss3
-CONFIG_INTERNAL_MD4=y
-CONFIG_INTERNAL_DH_GROUP5=y
-endif
-
ifeq ($(CONFIG_TLS), internal)
ifndef CONFIG_CRYPTO
CONFIG_CRYPTO=internal
diff --git a/hostapd/Makefile b/hostapd/Makefile
index e64c2497..e231e744 100644
--- a/hostapd/Makefile
+++ b/hostapd/Makefile
@@ -115,6 +115,7 @@ OBJS += ../src/utils/ip_addr.o
OBJS += ../src/common/ieee802_11_common.o
OBJS += ../src/common/wpa_common.o
+OBJS += ../src/common/hw_features_common.o
OBJS += ../src/eapol_auth/eapol_auth_sm.o
@@ -559,22 +560,6 @@ CONFIG_INTERNAL_RC4=y
CONFIG_INTERNAL_DH_GROUP5=y
endif
-ifeq ($(CONFIG_TLS), nss)
-ifdef TLS_FUNCS
-OBJS += ../src/crypto/tls_nss.o
-LIBS += -lssl3
-endif
-OBJS += ../src/crypto/crypto_nss.o
-ifdef NEED_FIPS186_2_PRF
-OBJS += ../src/crypto/fips_prf_internal.o
-SHA1OBJS += ../src/crypto/sha1-internal.o
-endif
-LIBS += -lnss3
-LIBS_h += -lnss3
-CONFIG_INTERNAL_MD4=y
-CONFIG_INTERNAL_DH_GROUP5=y
-endif
-
ifeq ($(CONFIG_TLS), internal)
ifndef CONFIG_CRYPTO
CONFIG_CRYPTO=internal
@@ -962,6 +947,7 @@ hostapd_cli: $(OBJS_c)
@$(E) " LD " $@
NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS) ../src/crypto/md5.o
+NOBJS += ../src/utils/common.o
ifdef NEED_RC4
ifdef CONFIG_INTERNAL_RC4
NOBJS += ../src/crypto/rc4.o
diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index 0e35aa66..bef16b15 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -23,6 +23,7 @@
#include "utils/eloop.h"
#include "common/version.h"
#include "common/ieee802_11_defs.h"
+#include "crypto/tls.h"
#include "drivers/driver.h"
#include "radius/radius_client.h"
#include "radius/radius_server.h"
@@ -1326,6 +1327,11 @@ static int hostapd_ctrl_iface_get(struct hostapd_data *hapd, char *cmd,
if (os_snprintf_error(buflen, res))
return -1;
return res;
+ } else if (os_strcmp(cmd, "tls_library") == 0) {
+ res = tls_get_library_version(buf, buflen);
+ if (os_snprintf_error(buflen, res))
+ return -1;
+ return res;
}
return -1;
@@ -1692,6 +1698,45 @@ done:
return res < 0 ? -1 : 0;
}
+
+static int hostapd_ctrl_test_alloc_fail(struct hostapd_data *hapd, char *cmd)
+{
+#ifdef WPA_TRACE_BFD
+ extern char wpa_trace_fail_func[256];
+ extern unsigned int wpa_trace_fail_after;
+ char *pos;
+
+ wpa_trace_fail_after = atoi(cmd);
+ pos = os_strchr(cmd, ':');
+ if (pos) {
+ pos++;
+ os_strlcpy(wpa_trace_fail_func, pos,
+ sizeof(wpa_trace_fail_func));
+ } else {
+ wpa_trace_fail_after = 0;
+ }
+
+ return 0;
+#else /* WPA_TRACE_BFD */
+ return -1;
+#endif /* WPA_TRACE_BFD */
+}
+
+
+static int hostapd_ctrl_get_alloc_fail(struct hostapd_data *hapd,
+ char *buf, size_t buflen)
+{
+#ifdef WPA_TRACE_BFD
+ extern char wpa_trace_fail_func[256];
+ extern unsigned int wpa_trace_fail_after;
+
+ return os_snprintf(buf, buflen, "%u:%s", wpa_trace_fail_after,
+ wpa_trace_fail_func);
+#else /* WPA_TRACE_BFD */
+ return -1;
+#endif /* WPA_TRACE_BFD */
+}
+
#endif /* CONFIG_TESTING_OPTIONS */
@@ -2013,6 +2058,12 @@ static void hostapd_ctrl_iface_receive(int sock, void *eloop_ctx,
} else if (os_strncmp(buf, "DATA_TEST_FRAME ", 16) == 0) {
if (hostapd_ctrl_iface_data_test_frame(hapd, buf + 16) < 0)
reply_len = -1;
+ } else if (os_strncmp(buf, "TEST_ALLOC_FAIL ", 16) == 0) {
+ if (hostapd_ctrl_test_alloc_fail(hapd, buf + 16) < 0)
+ reply_len = -1;
+ } else if (os_strcmp(buf, "GET_ALLOC_FAIL") == 0) {
+ reply_len = hostapd_ctrl_get_alloc_fail(hapd, reply,
+ reply_size);
#endif /* CONFIG_TESTING_OPTIONS */
} else if (os_strncmp(buf, "CHAN_SWITCH ", 12) == 0) {
if (hostapd_ctrl_iface_chan_switch(hapd->iface, buf + 12))
@@ -2206,8 +2257,11 @@ int hostapd_ctrl_iface_init(struct hostapd_data *hapd)
os_free(fname);
hapd->ctrl_sock = s;
- eloop_register_read_sock(s, hostapd_ctrl_iface_receive, hapd,
- NULL);
+ if (eloop_register_read_sock(s, hostapd_ctrl_iface_receive, hapd,
+ NULL) < 0) {
+ hostapd_ctrl_iface_deinit(hapd);
+ return -1;
+ }
hapd->msg_ctx = hapd;
wpa_msg_register_cb(hostapd_ctrl_iface_msg_cb);
@@ -2254,6 +2308,7 @@ void hostapd_ctrl_iface_deinit(struct hostapd_data *hapd)
}
dst = hapd->ctrl_dst;
+ hapd->ctrl_dst = NULL;
while (dst) {
prev = dst;
dst = dst->next;