From: Michal Privoznik Date: Tue, 21 Aug 2018 11:46:18 +0000 (+0200) Subject: virSecurityManagerNewDriver: Fix code pattern X-Git-Tag: v4.8.0-rc1~280 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c060e400d95c17f1bee8ee34066c6b9219566385;p=thirdparty%2Flibvirt.git virSecurityManagerNewDriver: Fix code pattern Use 'error' label to free allocated memory. Signed-off-by: Michal Privoznik Reviewed-by: John Ferlan --- 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; }