diff --git a/tests/hwsim/hostapd.py b/tests/hwsim/hostapd.py index 9d670768b..51ad02e17 100644 --- a/tests/hwsim/hostapd.py +++ b/tests/hwsim/hostapd.py @@ -42,11 +42,14 @@ class HostapdGlobal: self.dbg = hostname + "/" + str(port) self.mon.attach() - def cmd_execute(self, cmd_array): + def cmd_execute(self, cmd_array, shell=False): if self.hostname is None: - cmd = ' '.join(cmd_array) + if shell: + cmd = ' '.join(cmd_array) + else: + cmd = cmd_array proc = subprocess.Popen(cmd, stderr=subprocess.STDOUT, - stdout=subprocess.PIPE, shell=True) + stdout=subprocess.PIPE, shell=shell) out = proc.communicate()[0] ret = proc.returncode return ret, out @@ -146,14 +149,14 @@ class Hostapd: self.bssid = None self.bssidx = bssidx - def cmd_execute(self, cmd_array): + def cmd_execute(self, cmd_array, shell=False): if self.hostname is None: - cmd = "" - for arg in cmd_array: - cmd += arg + " " - cmd = cmd.strip() + if shell: + cmd = ' '.join(cmd_array) + else: + cmd = cmd_array proc = subprocess.Popen(cmd, stderr=subprocess.STDOUT, - stdout=subprocess.PIPE, shell=True) + stdout=subprocess.PIPE, shell=shell) out = proc.communicate()[0] ret = proc.returncode return ret, out @@ -588,6 +591,6 @@ def ht40_minus_params(channel="1", ssid=None, country=None): params['ht_capab'] = "[HT40-]" return params -def cmd_execute(apdev, cmd): +def cmd_execute(apdev, cmd, shell=False): hapd_global = HostapdGlobal(apdev) - return hapd_global.cmd_execute(cmd) + return hapd_global.cmd_execute(cmd, shell=shell) diff --git a/tests/hwsim/test_ap_ciphers.py b/tests/hwsim/test_ap_ciphers.py index cbb2b2feb..1d7877cb5 100644 --- a/tests/hwsim/test_ap_ciphers.py +++ b/tests/hwsim/test_ap_ciphers.py @@ -86,12 +86,14 @@ def test_ap_cipher_tkip_countermeasures_ap(dev, apdev): pairwise="TKIP", group="TKIP", scan_freq="2412") dev[0].dump_monitor() - dev[0].cmd_execute([ "echo", "-n", apdev[0]['bssid'], ">", testfile ]) + dev[0].cmd_execute([ "echo", "-n", apdev[0]['bssid'], ">", testfile ], + shell=True) ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=1) if ev is not None: raise Exception("Unexpected disconnection on first Michael MIC failure") - dev[0].cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ]) + dev[0].cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ], + shell=True) ev = dev[0].wait_disconnected(timeout=10, error="No disconnection after two Michael MIC failures") if "reason=14" not in ev: @@ -118,12 +120,14 @@ def test_ap_cipher_tkip_countermeasures_sta(dev, apdev): pairwise="TKIP", group="TKIP", scan_freq="2412") dev[0].dump_monitor() - hapd.cmd_execute([ "echo", "-n", dev[0].own_addr(), ">", testfile ]) + hapd.cmd_execute([ "echo", "-n", dev[0].own_addr(), ">", testfile ], + shell=True) ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=1) if ev is not None: raise Exception("Unexpected disconnection on first Michael MIC failure") - hapd.cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ]) + hapd.cmd_execute([ "echo", "-n", "ff:ff:ff:ff:ff:ff", ">", testfile ], + shell=True) ev = dev[0].wait_disconnected(timeout=10, error="No disconnection after two Michael MIC failures") if "reason=14 locally_generated=1" not in ev: diff --git a/tests/hwsim/wpasupplicant.py b/tests/hwsim/wpasupplicant.py index 1f456905b..a62a209bc 100644 --- a/tests/hwsim/wpasupplicant.py +++ b/tests/hwsim/wpasupplicant.py @@ -49,11 +49,14 @@ class WpaSupplicant: else: self.global_mon = None - def cmd_execute(self, cmd_array): + def cmd_execute(self, cmd_array, shell=False): if self.hostname is None: - cmd = ' '.join(cmd_array) + if shell: + cmd = ' '.join(cmd_array) + else: + cmd = cmd_array proc = subprocess.Popen(cmd, stderr=subprocess.STDOUT, - stdout=subprocess.PIPE, shell=True) + stdout=subprocess.PIPE, shell=shell) out = proc.communicate()[0] ret = proc.returncode return ret, out