]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
python3: Fix crashes in snapshot()
authorStéphane Graber <stgraber@ubuntu.com>
Mon, 9 Jun 2014 16:02:02 +0000 (12:02 -0400)
committerStéphane Graber <stgraber@ubuntu.com>
Mon, 9 Jun 2014 19:24:10 +0000 (15:24 -0400)
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@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/python-lxc/examples/api_test.py
src/python-lxc/lxc.c

index 79521970abd013e8df1cff9e9856f4c32bd3f80a..2abbb435fbb5fbd2794f3f05b04a8bf330017164 100755 (executable)
@@ -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)
index a8ab65b27cec67977f36f6bc2999f0604b1381f2..1bc977a310c5def0073dec0b241e4b7c55d684ce 100644 (file)
@@ -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))