[lxc-devel] [PATCH] python3: Fix crashes in snapshot()
Stéphane Graber
stgraber at ubuntu.com
Mon Jun 9 18:56:58 UTC 2014
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>
---
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
More information about the lxc-devel
mailing list