mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-29 02:38:22 -05:00
tests: Control interface output buffer limit
This verifies wpa_supplicant behavior in number of cases where the external program opening a control interface socket does not behave properly. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
2e95cfc188
commit
6b86872a7c
@ -7,6 +7,7 @@
|
|||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
import os
|
import os
|
||||||
|
import socket
|
||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@ -1671,3 +1672,88 @@ def _test_wpas_ctrl_oom(dev):
|
|||||||
res = dev[0].global_request(cmd)
|
res = dev[0].global_request(cmd)
|
||||||
if exp and exp not in res:
|
if exp and exp not in res:
|
||||||
raise Exception("Unexpected success for '%s' during OOM" % cmd)
|
raise Exception("Unexpected success for '%s' during OOM" % cmd)
|
||||||
|
|
||||||
|
def test_wpas_ctrl_socket_full(dev, apdev, test_params):
|
||||||
|
"""wpa_supplicant control socket and full send buffer"""
|
||||||
|
if not dev[0].ping():
|
||||||
|
raise Exception("Could not ping wpa_supplicant at the beginning of the test")
|
||||||
|
dev[0].get_status()
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
|
||||||
|
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
|
||||||
|
local = "/tmp/wpa_ctrl_test_%d-%d" % (os.getpid(), counter)
|
||||||
|
counter += 1
|
||||||
|
s.bind(local)
|
||||||
|
s.connect("/var/run/wpa_supplicant/wlan0")
|
||||||
|
for i in range(20):
|
||||||
|
logger.debug("Command %d" % i)
|
||||||
|
try:
|
||||||
|
s.send("MIB")
|
||||||
|
except Exception, e:
|
||||||
|
logger.info("Could not send command %d: %s" % (i, str(e)))
|
||||||
|
break
|
||||||
|
# Close without receiving response
|
||||||
|
time.sleep(0.01)
|
||||||
|
|
||||||
|
if not dev[0].ping():
|
||||||
|
raise Exception("Could not ping wpa_supplicant in the middle of the test")
|
||||||
|
dev[0].get_status()
|
||||||
|
|
||||||
|
s2 = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
|
||||||
|
local2 = "/tmp/wpa_ctrl_test_%d-%d" % (os.getpid(), counter)
|
||||||
|
counter += 1
|
||||||
|
s2.bind(local2)
|
||||||
|
s2.connect("/var/run/wpa_supplicant/wlan0")
|
||||||
|
for i in range(10):
|
||||||
|
logger.debug("Command %d [2]" % i)
|
||||||
|
try:
|
||||||
|
s2.send("MIB")
|
||||||
|
except Exception, e:
|
||||||
|
logger.info("Could not send command %d [2]: %s" % (i, str(e)))
|
||||||
|
break
|
||||||
|
# Close without receiving response
|
||||||
|
time.sleep(0.01)
|
||||||
|
|
||||||
|
s.close()
|
||||||
|
os.unlink(local)
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
logger.debug("Command %d [3]" % i)
|
||||||
|
try:
|
||||||
|
s2.send("MIB")
|
||||||
|
except Exception, e:
|
||||||
|
logger.info("Could not send command %d [3]: %s" % (i, str(e)))
|
||||||
|
break
|
||||||
|
# Close without receiving response
|
||||||
|
time.sleep(0.01)
|
||||||
|
|
||||||
|
s2.close()
|
||||||
|
os.unlink(local2)
|
||||||
|
|
||||||
|
if not dev[0].ping():
|
||||||
|
raise Exception("Could not ping wpa_supplicant in the middle of the test [2]")
|
||||||
|
dev[0].get_status()
|
||||||
|
|
||||||
|
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
|
||||||
|
local = "/tmp/wpa_ctrl_test_%d-%d" % (os.getpid(), counter)
|
||||||
|
counter += 1
|
||||||
|
s.bind(local)
|
||||||
|
s.connect("/var/run/wpa_supplicant/wlan0")
|
||||||
|
s.send("ATTACH")
|
||||||
|
res = s.recv(100)
|
||||||
|
if "OK" not in res:
|
||||||
|
raise Exception("Could not attach a test socket")
|
||||||
|
|
||||||
|
for i in range(5):
|
||||||
|
dev[0].scan(freq=2412)
|
||||||
|
|
||||||
|
s.close()
|
||||||
|
os.unlink(local)
|
||||||
|
|
||||||
|
for i in range(5):
|
||||||
|
dev[0].scan(freq=2412)
|
||||||
|
|
||||||
|
if not dev[0].ping():
|
||||||
|
raise Exception("Could not ping wpa_supplicant at the end of the test")
|
||||||
|
dev[0].get_status()
|
||||||
|
Loading…
Reference in New Issue
Block a user