Skip to content

Commit

Permalink
fix crash in getAllDomainStats
Browse files Browse the repository at this point in the history
Commits 1d39dba and 827ed9b broke the libvirt-python API by removing
virDomainRef() and virDomainFree().  virDomainStatsRecordListFree() will
free that domain pointer and later when virDomain (python object) call
its destructor and tries to free that same pointer again.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1326839

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
  • Loading branch information
phrdina committed Apr 18, 2016
1 parent 1233645 commit e9c4e2a
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion libvirt-override.c
Expand Up @@ -8381,6 +8381,7 @@ convertDomainStatsRecord(virDomainStatsRecordPtr *records,
PyObject *py_retval;
PyObject *py_record;
PyObject *py_record_stats = NULL;
virDomainPtr dom = NULL;
size_t i;

if (!(py_retval = PyList_New(nrecords)))
Expand All @@ -8392,9 +8393,12 @@ convertDomainStatsRecord(virDomainStatsRecordPtr *records,

VIR_PY_LIST_SET_GOTO(py_retval, i, py_record, error);

dom = records[i]->dom;
virDomainRef(dom);
VIR_PY_TUPLE_SET_GOTO(py_record, 0,
libvirt_virDomainPtrWrap(records[i]->dom),
libvirt_virDomainPtrWrap(dom),
error);
dom = NULL;

if (!(py_record_stats = getPyVirTypedParameter(records[i]->params,
records[i]->nparams)))
Expand All @@ -8406,6 +8410,8 @@ convertDomainStatsRecord(virDomainStatsRecordPtr *records,
return py_retval;

error:
if (dom)
virDomainFree(dom);
Py_XDECREF(py_retval);
return NULL;
}
Expand Down

0 comments on commit e9c4e2a

Please sign in to comment.