[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>
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v6 00/10] qemu.py: Pylint/style fixes, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 01/10] qemu.py: Pylint/style fixes, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 02/10] qemu|qtest: Avoid dangerous arguments, Lukáš Doktor, 2017/08/18
- Re: [Qemu-devel] [PATCH v6 02/10] qemu|qtest: Avoid dangerous arguments,
Cleber Rosa <=
- [Qemu-devel] [PATCH v6 03/10] qemu.py: Use iteritems rather than keys(), Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 04/10] qemu.py: Simplify QMP key-conversion, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 05/10] qemu.py: Use custom exceptions rather than Exception, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 06/10] qmp.py: Couple of pylint/style fixes, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 07/10] qmp.py: Use object-based class for QEMUMonitorProtocol, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 08/10] qmp.py: Avoid "has_key" usage, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 09/10] qmp.py: Avoid overriding a builtin object, Lukáš Doktor, 2017/08/18
- [Qemu-devel] [PATCH v6 10/10] qtest.py: Few pylint/style fixes, Lukáš Doktor, 2017/08/18