
On 03/20/2012 01:14 AM, Alex Jia wrote:
Detected by valgrind. Leaks are introduced in commit 17c7795.
* python/libvirt-override.c (libvirt_virNodeGetMemoryStats): fix memory leaks and improve codes return value.
For details, please see the following link: RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=770944
Signed-off-by: Alex Jia <ajia@redhat.com> --- python/libvirt-override.c | 41 +++++++++++++++++++++++++++++++---------- 1 files changed, 31 insertions(+), 10 deletions(-)
for (i = 0; i < nparams; i++) { - PyDict_SetItem(ret, - libvirt_constcharPtrWrap(stats[i].field), - libvirt_ulonglongWrap(stats[i].value)); + key = libvirt_constcharPtrWrap(stats[i].field); + val = libvirt_ulonglongWrap(stats[i].value); + + if (!key || !val) { + ret = NULL; + goto error;
Memory leak of ret.
+ } + + if (PyDict_SetItem(ret, key, val) < 0) { + Py_DECREF(ret); + ret = NULL; + goto error; + }
Fix it by doing: if (!key || !val || PyDict_SetItem(ret, key, val) < 0) { Py_DECREF(ret); ret = NULL; goto error; } ACK with that fix. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org