diff options
author | Pavel Hrdina <phrdina@redhat.com> | 2015-09-29 21:59:41 +0200 |
---|---|---|
committer | Pavel Hrdina <phrdina@redhat.com> | 2015-10-05 09:35:38 +0200 |
commit | 8af1c9cb6c4fd2867c248de192f91bec1fb1def9 (patch) | |
tree | e5530db67a763e4594819b1cc0c6bb2bb7494fc0 /libvirt-lxc-override.c | |
parent | 62ad6ff3fc3121e39d2b5bdbe3c3d62d6f4486c9 (diff) | |
download | libvirt-python-8af1c9cb6c4fd2867c248de192f91bec1fb1def9.tar.gz |
Must check return value for all Py*_New functions
If the function fails, we need to cleanup memory and return NULL.
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Diffstat (limited to 'libvirt-lxc-override.c')
-rw-r--r-- | libvirt-lxc-override.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libvirt-lxc-override.c b/libvirt-lxc-override.c index 20d1cf4..b0550c7 100644 --- a/libvirt-lxc-override.c +++ b/libvirt-lxc-override.c @@ -79,7 +79,9 @@ libvirt_lxc_virDomainLxcOpenNamespace(PyObject *self ATTRIBUTE_UNUSED, if (c_retval < 0) return VIR_PY_NONE; - py_retval = PyList_New(0); + if ((py_retval = PyList_New(0)) == NULL) + goto error; + for (i = 0; i < c_retval; i++) { PyObject *item = NULL; @@ -91,6 +93,8 @@ libvirt_lxc_virDomainLxcOpenNamespace(PyObject *self ATTRIBUTE_UNUSED, goto error; } } + + cleanup: VIR_FREE(fdlist); return py_retval; @@ -98,8 +102,8 @@ libvirt_lxc_virDomainLxcOpenNamespace(PyObject *self ATTRIBUTE_UNUSED, for (i = 0; i < c_retval; i++) { VIR_FORCE_CLOSE(fdlist[i]); } - VIR_FREE(fdlist); - return NULL; + Py_CLEAR(py_retval); + goto cleanup; } /************************************************************************ * * |