mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 23:07:44 +00:00
bhyveConnectGetCapabilities: Fix double caps unref
At the beginning of the function we gain a reference to the driver capabilities. Then, we call format function (*) which if failed, unref over caps is called. Then, at the end another unref occurs. * - Moreover, the format was not called over gained caps, but over privconn->caps directly which is not allowed anymore. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
17b17565e6
commit
23419a62c2
@ -135,22 +135,24 @@ bhyveConnectGetCapabilities(virConnectPtr conn)
|
|||||||
{
|
{
|
||||||
bhyveConnPtr privconn = conn->privateData;
|
bhyveConnPtr privconn = conn->privateData;
|
||||||
virCapsPtr caps;
|
virCapsPtr caps;
|
||||||
char *xml;
|
char *xml = NULL;
|
||||||
|
|
||||||
if (virConnectGetCapabilitiesEnsureACL(conn) < 0)
|
if (virConnectGetCapabilitiesEnsureACL(conn) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
caps = bhyveDriverGetCapabilities(privconn);
|
if (!(caps = bhyveDriverGetCapabilities(privconn))) {
|
||||||
if (!caps)
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
_("Unable to get Capabilities"));
|
_("Unable to get Capabilities"));
|
||||||
|
goto cleanup;
|
||||||
if ((xml = virCapabilitiesFormatXML(privconn->caps)) == NULL) {
|
|
||||||
virObjectUnref(caps);
|
|
||||||
virReportOOMError();
|
|
||||||
}
|
}
|
||||||
virObjectUnref(caps);
|
|
||||||
|
|
||||||
|
if (!(xml = virCapabilitiesFormatXML(caps))) {
|
||||||
|
virReportOOMError();
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
virObjectUnref(caps);
|
||||||
return xml;
|
return xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user