]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: fail_test instead of alloc_fail for aes_{encrypt,decrypt}_init
authorJouni Malinen <jouni@qca.qualcomm.com>
Thu, 14 Jan 2016 17:46:14 +0000 (19:46 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 14 Jan 2016 18:10:16 +0000 (20:10 +0200)
This is needed to fix ap_wpa2_eap_psk_oom, ap_wpa2_eap_sim_oom,
eap_proto_psk_errors, and ap_ft_oom with the new OpenSSL dynamic memory
allocation design.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
tests/hwsim/test_ap_eap.py
tests/hwsim/test_ap_ft.py
tests/hwsim/test_eap_proto.py

index f5d7bf1bebdfd7602c343280045292dcb8d1bd37..1c11a824c92c062bcc8e5e8fba7cdb0a7dc7394e 100644 (file)
@@ -731,7 +731,7 @@ def test_ap_wpa2_eap_sim_oom(dev, apdev):
               (11, "milenage_f2345"),
               (12, "milenage_f2345") ]
     for count, func in tests:
-        with alloc_fail(dev[0], count, func):
+        with fail_test(dev[0], count, func):
             dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="SIM",
                            identity="1232010000000000",
                            password="90dca4eda45b53cf0f12d7c9c3bc6a89:cb9cccc4b9258e6dca4760379fb82581",
@@ -2708,19 +2708,33 @@ def test_ap_wpa2_eap_psk_oom(dev, apdev):
     skip_with_fips(dev[0])
     params = hostapd.wpa2_eap_params(ssid="test-wpa2-eap")
     hostapd.add_ap(apdev[0]['ifname'], params)
+    tests = [ (1, "=aes_128_eax_encrypt"),
+              (1, "=aes_128_eax_decrypt") ]
+    for count, func in tests:
+        with alloc_fail(dev[0], count, func):
+            dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PSK",
+                           identity="psk.user@example.com",
+                           password_hex="0123456789abcdef0123456789abcdef",
+                           wait_connect=False, scan_freq="2412")
+            ev = dev[0].wait_event(["CTRL-EVENT-EAP-METHOD"], timeout=5)
+            if ev is None:
+                raise Exception("EAP method not selected")
+            wait_fail_trigger(dev[0], "GET_ALLOC_FAIL",
+                              note="Failure not triggered: %d:%s" % (count, func))
+            dev[0].request("REMOVE_NETWORK all")
+            dev[0].wait_disconnected()
+
     tests = [ (1, "aes_128_ctr_encrypt;aes_128_eax_encrypt"),
               (1, "omac1_aes_128;aes_128_eax_encrypt"),
               (2, "omac1_aes_128;aes_128_eax_encrypt"),
               (3, "omac1_aes_128;aes_128_eax_encrypt"),
-              (1, "=aes_128_eax_encrypt"),
               (1, "omac1_aes_vector"),
-              (1, "aes_128_ctr_encrypt;aes_128_eax_decrypt"),
               (1, "omac1_aes_128;aes_128_eax_decrypt"),
               (2, "omac1_aes_128;aes_128_eax_decrypt"),
               (3, "omac1_aes_128;aes_128_eax_decrypt"),
-              (1, "=aes_128_eax_decrypt") ]
+              (1, "aes_128_ctr_encrypt;aes_128_eax_decrypt") ]
     for count, func in tests:
-        with alloc_fail(dev[0], count, func):
+        with fail_test(dev[0], count, func):
             dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PSK",
                            identity="psk.user@example.com",
                            password_hex="0123456789abcdef0123456789abcdef",
@@ -2728,13 +2742,12 @@ def test_ap_wpa2_eap_psk_oom(dev, apdev):
             ev = dev[0].wait_event(["CTRL-EVENT-EAP-METHOD"], timeout=5)
             if ev is None:
                 raise Exception("EAP method not selected")
-            for i in range(10):
-                if "0:" in dev[0].request("GET_ALLOC_FAIL"):
-                    break
-                time.sleep(0.02)
+            wait_fail_trigger(dev[0], "GET_FAIL",
+                              note="Failure not triggered: %d:%s" % (count, func))
             dev[0].request("REMOVE_NETWORK all")
+            dev[0].wait_disconnected()
 
-    with alloc_fail(dev[0], 1, "aes_128_encrypt_block"):
+    with fail_test(dev[0], 1, "aes_128_encrypt_block"):
             dev[0].connect("test-wpa2-eap", key_mgmt="WPA-EAP", eap="PSK",
                            identity="psk.user@example.com",
                            password_hex="0123456789abcdef0123456789abcdef",
@@ -2743,6 +2756,7 @@ def test_ap_wpa2_eap_psk_oom(dev, apdev):
             if ev is None:
                 raise Exception("EAP method failure not reported")
             dev[0].request("REMOVE_NETWORK all")
+            dev[0].wait_disconnected()
 
 def test_ap_wpa_eap_peap_eap_mschapv2(dev, apdev):
     """WPA-Enterprise connection using EAP-PEAP/EAP-MSCHAPv2"""
index 7faa5fe74ea9ea8c13da8900826cf89241405e9f..28b35abb5022687924e11767db18e862c4a4e8a5 100644 (file)
@@ -789,7 +789,7 @@ def test_ap_ft_oom(dev, apdev):
     dev[0].scan_for_bss(dst, freq="2412")
     with alloc_fail(dev[0], 1, "wpa_ft_gen_req_ies"):
         dev[0].roam(dst)
-    with alloc_fail(dev[0], 1, "wpa_ft_mic"):
+    with fail_test(dev[0], 1, "wpa_ft_mic"):
         dev[0].roam(dst, fail_test=True)
     with fail_test(dev[0], 1, "os_get_random;wpa_ft_prepare_auth_request"):
         dev[0].roam(dst, fail_test=True)
index 668a46369976a340f2c91a0e47e6c85480d9b447..8b795e61a80d2b2ffbde8f8ec3d7183ecaad9453 100644 (file)
@@ -2787,7 +2787,7 @@ def test_eap_proto_psk_errors(dev, apdev):
     params = hostapd.wpa2_eap_params(ssid="eap-test")
     hapd = hostapd.add_ap(apdev[0]['ifname'], params)
 
-    for i in range(1, 6):
+    for i in range(1, 3):
         with alloc_fail(dev[0], i, "eap_psk_init"):
             dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
                            eap="PSK", identity="psk.user@example.com",
@@ -2800,24 +2800,25 @@ def test_eap_proto_psk_errors(dev, apdev):
             dev[0].request("REMOVE_NETWORK all")
             dev[0].wait_disconnected()
 
+    for i in range(1, 4):
+        with fail_test(dev[0], i, "eap_psk_key_setup;eap_psk_init"):
+            dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
+                           eap="PSK", identity="psk.user@example.com",
+                           password_hex="0123456789abcdef0123456789abcdef",
+                           wait_connect=False)
+            ev = dev[0].wait_event(["EAP: Failed to initialize EAP method"],
+                                   timeout=15)
+            if ev is None:
+                raise Exception("Timeout on EAP start")
+            dev[0].request("REMOVE_NETWORK all")
+            dev[0].wait_disconnected()
+
     tests = [ (1, "=eap_psk_process_1"),
               (2, "=eap_psk_process_1"),
               (1, "eap_msg_alloc;eap_psk_process_1"),
               (1, "=eap_psk_process_3"),
               (2, "=eap_psk_process_3"),
               (1, "eap_msg_alloc;eap_psk_process_3"),
-              (1, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (2, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (3, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (4, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (5, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (6, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (7, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (8, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (9, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (10, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
-              (1, "aes_128_ctr_encrypt;aes_128_eax_decrypt;eap_psk_process_3"),
-              (1, "aes_128_ctr_encrypt;aes_128_eax_encrypt;eap_psk_process_3"),
               (1, "eap_psk_getKey"),
               (1, "eap_psk_get_session_id"),
               (1, "eap_psk_get_emsk") ]
@@ -2831,15 +2832,8 @@ def test_eap_proto_psk_errors(dev, apdev):
                                    timeout=15)
             if ev is None:
                 raise Exception("Timeout on EAP start")
-            ok = False
-            for j in range(10):
-                state = dev[0].request('GET_ALLOC_FAIL')
-                if state.startswith('0:'):
-                    ok = True
-                    break
-                time.sleep(0.1)
-            if not ok:
-                raise Exception("No allocation failure seen for %d:%s" % (count, func))
+            wait_fail_trigger(dev[0], "GET_ALLOC_FAIL",
+                              note="No allocation failure seen for %d:%s" % (count, func))
             dev[0].request("REMOVE_NETWORK all")
             dev[0].wait_disconnected()
 
@@ -2850,7 +2844,19 @@ def test_eap_proto_psk_errors(dev, apdev):
               (3, "aes_128_eax_decrypt;eap_psk_process_3"),
               (1, "aes_128_eax_encrypt;eap_psk_process_3"),
               (2, "aes_128_eax_encrypt;eap_psk_process_3"),
-              (3, "aes_128_eax_encrypt;eap_psk_process_3") ]
+              (3, "aes_128_eax_encrypt;eap_psk_process_3"),
+              (1, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (2, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (3, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (4, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (5, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (6, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (7, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (8, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (9, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (10, "aes_128_encrypt_block;eap_psk_derive_keys;eap_psk_process_3"),
+              (1, "aes_128_ctr_encrypt;aes_128_eax_decrypt;eap_psk_process_3"),
+              (1, "aes_128_ctr_encrypt;aes_128_eax_encrypt;eap_psk_process_3") ]
     for count, func in tests:
         with fail_test(dev[0], count, func):
             dev[0].connect("eap-test", key_mgmt="WPA-EAP", scan_freq="2412",
@@ -2861,15 +2867,8 @@ def test_eap_proto_psk_errors(dev, apdev):
                                    timeout=15)
             if ev is None:
                 raise Exception("Timeout on EAP start")
-            ok = False
-            for j in range(10):
-                state = dev[0].request('GET_FAIL')
-                if state.startswith('0:'):
-                    ok = True
-                    break
-                time.sleep(0.1)
-            if not ok:
-                raise Exception("No failure seen for %d:%s" % (count, func))
+            wait_fail_trigger(dev[0], "GET_FAIL",
+                              note="No failure seen for %d:%s" % (count, func))
             dev[0].request("REMOVE_NETWORK all")
             dev[0].wait_disconnected()