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 | ||||
|     ''' | ||||
| 
 | ||||
|     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, | ||||
|                  socket_scm_helper=None, debug=False): | ||||
|         ''' | ||||
| @ -46,6 +46,10 @@ class QEMUMachine(object): | ||||
|         @param debug: enable debug mode | ||||
|         @note: Qemu process is not started until launch() is used. | ||||
|         ''' | ||||
|         if args is None: | ||||
|             args = [] | ||||
|         if wrapper is None: | ||||
|             wrapper = [] | ||||
|         if name is None: | ||||
|             name = "qemu-%d" % os.getpid() | ||||
|         if monitor_address is None: | ||||
|  | ||||
| @ -79,7 +79,7 @@ class QEMUQtestProtocol(object): | ||||
| class QEMUQtestMachine(qemu.QEMUMachine): | ||||
|     '''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): | ||||
|         if name is None: | ||||
|             name = "qemu-%d" % os.getpid() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Lukáš Doktor
						Lukáš Doktor