tests: More coverage for IBSS RSN OOM

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2016-08-13 21:48:04 +03:00
parent b97a541087
commit 50348c5c32

View file

@ -12,7 +12,7 @@ import re
import subprocess import subprocess
import hwsim_utils import hwsim_utils
from utils import alloc_fail from utils import alloc_fail, wait_fail_trigger
def connect_ibss_cmd(dev, id, freq=2412): def connect_ibss_cmd(dev, id, freq=2412):
dev.dump_monitor() dev.dump_monitor()
@ -498,6 +498,87 @@ def test_ibss_rsn_oom(dev):
"""IBSS RSN OOM during wpa_init""" """IBSS RSN OOM during wpa_init"""
with alloc_fail(dev[0], 1, "wpa_init"): with alloc_fail(dev[0], 1, "wpa_init"):
ssid="ibss-rsn" ssid="ibss-rsn"
id = add_ibss_rsn(dev[0], ssid) id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
connect_ibss_cmd(dev[0], id) connect_ibss_cmd(dev[0], id)
bssid0 = wait_ibss_connection(dev[0]) bssid0 = wait_ibss_connection(dev[0])
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
with alloc_fail(dev[0], 1, "=ibss_rsn_init"):
ssid="ibss-rsn"
id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
connect_ibss_cmd(dev[0], id)
bssid0 = wait_ibss_connection(dev[0])
dev[0].request("REMOVE_NETWORK all")
dev[0].dump_monitor()
def send_eapol_rx(dev, dst):
if "OK" not in dev.request("EAPOL_RX %s 0203005f02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
raise Exception("EAPOL_RX for %s failed" % dst)
def test_ibss_rsn_eapol_trigger(dev):
"""IBSS RSN and EAPOL trigger for a new peer"""
ssid="ibss-rsn"
id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
connect_ibss_cmd(dev[0], id)
bssid0 = wait_ibss_connection(dev[0])
send_eapol_rx(dev[0], "02:ff:00:00:00:01")
send_eapol_rx(dev[0], "02:ff:00:00:00:01")
dst = "02:ff:00:00:00:01"
logger.info("Too short EAPOL frame")
if "OK" not in dev[0].request("EAPOL_RX %s 0203005e02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
raise Exception("EAPOL_RX for %s failed" % dst)
logger.info("RSN: EAPOL frame (type 255) discarded, not a Key frame")
if "OK" not in dev[0].request("EAPOL_RX %s 02ff005f02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
raise Exception("EAPOL_RX for %s failed" % dst)
logger.info("RSN: EAPOL frame payload size 96 invalid (frame size 99)")
if "OK" not in dev[0].request("EAPOL_RX %s 0203006002008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
raise Exception("EAPOL_RX for %s failed" % dst)
logger.info("RSN: EAPOL-Key type (255) unknown, discarded")
if "OK" not in dev[0].request("EAPOL_RX %s 0203005fff008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
raise Exception("EAPOL_RX for %s failed" % dst)
with alloc_fail(dev[0], 1, "ibss_rsn_rx_eapol"):
send_eapol_rx(dev[0], "02:ff:00:00:00:02")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1, "wpa_auth_sta_init;ibss_rsn_auth_init"):
send_eapol_rx(dev[0], "02:ff:00:00:00:03")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1, "=ibss_rsn_peer_init"):
send_eapol_rx(dev[0], "02:ff:00:00:00:04")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1, "ibss_rsn_process_rx_eapol"):
send_eapol_rx(dev[0], "02:ff:00:00:00:05")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1,
"wpa_sm_set_assoc_wpa_ie_default;ibss_rsn_supp_init"):
send_eapol_rx(dev[0], "02:ff:00:00:00:06")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1, "wpa_sm_init;ibss_rsn_supp_init"):
send_eapol_rx(dev[0], "02:ff:00:00:00:07")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1, "=ibss_rsn_supp_init"):
send_eapol_rx(dev[0], "02:ff:00:00:00:08")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1, "supp_alloc_eapol"):
send_eapol_rx(dev[0], "02:ff:00:00:00:09")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
with alloc_fail(dev[0], 1, "wpa_validate_wpa_ie;ibss_rsn_auth_init"):
send_eapol_rx(dev[0], "02:ff:00:00:00:0a")
wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
logger.info("RSN: Timeout on waiting Authentication frame response")
if "OK" not in dev[0].request("IBSS_RSN 02:ff:00:00:00:0b"):
raise Exception("Unexpected IBSS_RSN result")
time.sleep(1.1)