[lxc-devel] [PATCH] python3: Fix crashes in snapshot()

Serge Hallyn serge.hallyn at ubuntu.com
Mon Jun 9 19:17:14 UTC 2014


Quoting Stéphane Graber (stgraber at ubuntu.com):
> This makes sure all PyObject structs are always initialized to NULL,
> this will fix issues such as (issue #239).
> 
> Also add a snapshot/list/restore testcase to the python3 api test code.
> 
> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>

Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>

> ---
>  src/python-lxc/examples/api_test.py | 8 ++++++++
>  src/python-lxc/lxc.c                | 9 +++++----
>  2 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/src/python-lxc/examples/api_test.py b/src/python-lxc/examples/api_test.py
> index 7952197..2abbb43 100755
> --- a/src/python-lxc/examples/api_test.py
> +++ b/src/python-lxc/examples/api_test.py
> @@ -180,6 +180,14 @@ assert(container.init_pid == -1)
>  assert(not container.running)
>  assert(container.state == "STOPPED")
>  
> +## Snapshotting the container
> +print("Snapshotting the container")
> +assert(not container.snapshot_list())
> +assert(container.snapshot() == "snap0")
> +assert(len(container.snapshot_list()) == 1)
> +assert(container.snapshot_restore("snap0") is True)
> +assert(container.snapshot_destroy("snap0") is True)
> +
>  ## Cloning the container
>  print("Cloning the container as '%s'" % CLONE_NAME)
>  clone = container.clone(CLONE_NAME)
> diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c
> index a8ab65b..1bc977a 100644
> --- a/src/python-lxc/lxc.c
> +++ b/src/python-lxc/lxc.c
> @@ -148,7 +148,7 @@ static lxc_attach_options_t *lxc_attach_parse_options(PyObject *kwds)
>      PyObject *stdout_obj = NULL;
>      PyObject *stderr_obj = NULL;
>      PyObject *initial_cwd_obj = NULL;
> -    PyObject *dummy;
> +    PyObject *dummy = NULL;
>      bool parse_result;
>  
>      lxc_attach_options_t default_options = LXC_ATTACH_OPTIONS_DEFAULT;
> @@ -257,7 +257,7 @@ static PyObject *
>  LXC_arch_to_personality(PyObject *self, PyObject *arg)
>  {
>      long rv = -1;
> -    PyObject *pystr;
> +    PyObject *pystr = NULL;
>      char *str;
>  
>      if (!PyUnicode_Check(arg)) {
> @@ -737,7 +737,8 @@ Container_create(Container *self, PyObject *args, PyObject *kwds)
>      char* template_name = NULL;
>      int flags = 0;
>      char** create_args = {NULL};
> -    PyObject *retval = NULL, *vargs = NULL;
> +    PyObject *retval = NULL;
> +    PyObject *vargs = NULL;
>      int i = 0;
>      static char *kwlist[] = {"template", "flags", "args", NULL};
>  
> @@ -1229,7 +1230,7 @@ Container_snapshot(Container *self, PyObject *args, PyObject *kwds)
>      int retval = 0;
>      int ret = 0;
>      char newname[20];
> -    PyObject *py_comment_path;
> +    PyObject *py_comment_path = NULL;
>  
>      if (! PyArg_ParseTupleAndKeywords(args, kwds, "|O&", kwlist,
>                                        PyUnicode_FSConverter, &py_comment_path))
> -- 
> 1.9.1
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel


More information about the lxc-devel mailing list