qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 02/10] qemu|qtest: Avoid dangerous arguments


From: Cleber Rosa
Subject: Re: [Qemu-devel] [PATCH v6 02/10] qemu|qtest: Avoid dangerous arguments
Date: Thu, 24 Aug 2017 18:55:26 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1


On 08/18/2017 10:26 AM, Lukáš Doktor wrote:
> 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 <address@hidden>
> Reviewed-by: Eduardo Habkost <address@hidden>
> Reviewed-by: John Snow <address@hidden>
> ---
>  scripts/qemu.py  | 6 +++++-
>  scripts/qtest.py | 2 +-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/qemu.py b/scripts/qemu.py
> index dd679f1..5d09de4 100644
> --- a/scripts/qemu.py
> +++ b/scripts/qemu.py
> @@ -23,7 +23,7 @@ import qmp.qmp
>  class QEMUMachine(object):
>      '''A QEMU VM'''
>  
> -    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):
>          '''
> @@ -39,6 +39,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:
> diff --git a/scripts/qtest.py b/scripts/qtest.py
> index d5aecb5..ab183c0 100644
> --- a/scripts/qtest.py
> +++ b/scripts/qtest.py
> @@ -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()
> 

Reviewed-by: Cleber Rosa <address@hidden>

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]