mirror of https://github.com/xemu-project/xemu.git
qemu|qtest: Avoid dangerous arguments
The list object is mutable in python and potentially might modify other object's arguments when used as default argument. Reproducer: >>> vm1 = QEMUMachine("qemu") >>> vm2 = QEMUMachine("qemu") >>> vm1._wrapper.append("foo") >>> print vm2._wrapper ['foo'] In this case the `args` is actually copied so it would be safe to keep it, but it's not a good practice to keep it. The same issue applies in inherited qtest module. Signed-off-by: Lukáš Doktor <ldoktor@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Message-Id: <20170818142613.32394-3-ldoktor@redhat.com> Reviewed-by: Cleber Rosa <crosa@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
2d853c70a2
commit
2782fc517d
|
@ -30,7 +30,7 @@ class QEMUMachine(object):
|
||||||
# vm is guaranteed to be shut down here
|
# vm is guaranteed to be shut down here
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, binary, args=[], wrapper=[], name=None,
|
def __init__(self, binary, args=None, wrapper=None, name=None,
|
||||||
test_dir="/var/tmp", monitor_address=None,
|
test_dir="/var/tmp", monitor_address=None,
|
||||||
socket_scm_helper=None, debug=False):
|
socket_scm_helper=None, debug=False):
|
||||||
'''
|
'''
|
||||||
|
@ -46,6 +46,10 @@ class QEMUMachine(object):
|
||||||
@param debug: enable debug mode
|
@param debug: enable debug mode
|
||||||
@note: Qemu process is not started until launch() is used.
|
@note: Qemu process is not started until launch() is used.
|
||||||
'''
|
'''
|
||||||
|
if args is None:
|
||||||
|
args = []
|
||||||
|
if wrapper is None:
|
||||||
|
wrapper = []
|
||||||
if name is None:
|
if name is None:
|
||||||
name = "qemu-%d" % os.getpid()
|
name = "qemu-%d" % os.getpid()
|
||||||
if monitor_address is None:
|
if monitor_address is None:
|
||||||
|
|
|
@ -79,7 +79,7 @@ class QEMUQtestProtocol(object):
|
||||||
class QEMUQtestMachine(qemu.QEMUMachine):
|
class QEMUQtestMachine(qemu.QEMUMachine):
|
||||||
'''A QEMU VM'''
|
'''A QEMU VM'''
|
||||||
|
|
||||||
def __init__(self, binary, args=[], name=None, test_dir="/var/tmp",
|
def __init__(self, binary, args=None, name=None, test_dir="/var/tmp",
|
||||||
socket_scm_helper=None):
|
socket_scm_helper=None):
|
||||||
if name is None:
|
if name is None:
|
||||||
name = "qemu-%d" % os.getpid()
|
name = "qemu-%d" % os.getpid()
|
||||||
|
|
Loading…
Reference in New Issue