Use 'error' label to free allocated memory. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/security/security_manager.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/security/security_manager.c b/src/security/security_manager.c index df7ffa84aa..e1b571ea52 100644 --- a/src/security/security_manager.c +++ b/src/security/security_manager.c @@ -73,8 +73,8 @@ virSecurityManagerNewDriver(virSecurityDriverPtr drv, const char *virtDriver, unsigned int flags) { - virSecurityManagerPtr mgr; - char *privateData; + virSecurityManagerPtr mgr = NULL; + char *privateData = NULL; if (virSecurityManagerInitialize() < 0) return NULL; @@ -87,22 +87,22 @@ virSecurityManagerNewDriver(virSecurityDriverPtr drv, if (VIR_ALLOC_N(privateData, drv->privateDataLen) < 0) return NULL; - if (!(mgr = virObjectLockableNew(virSecurityManagerClass))) { - VIR_FREE(privateData); - return NULL; - } + if (!(mgr = virObjectLockableNew(virSecurityManagerClass))) + goto error; mgr->drv = drv; mgr->flags = flags; mgr->virtDriver = virtDriver; - mgr->privateData = privateData; + VIR_STEAL_PTR(mgr->privateData, privateData); - if (drv->open(mgr) < 0) { - virObjectUnref(mgr); - return NULL; - } + if (drv->open(mgr) < 0) + goto error; return mgr; + error: + VIR_FREE(privateData); + virObjectUnref(mgr); + return NULL; } -- 2.16.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list