]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
security: Resolve Coverity RESOURCE_LEAK
authorJohn Ferlan <jferlan@redhat.com>
Fri, 13 Feb 2015 19:15:26 +0000 (14:15 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Sat, 14 Feb 2015 12:31:36 +0000 (07:31 -0500)
Introduced by commit id 'c3d9d3bb' - return from virSecurityManagerCheckModel
wasn't VIR_FREE()'ing the virSecurityManagerGetNested allocated memory.

src/security/security_manager.c

index f2a32bc1fa1fe61a2b016d9c065c350638f5cbad..b0cd9e8569031ccc17a31b10bcaa90a3d0025eb8 100644 (file)
@@ -688,24 +688,29 @@ virSecurityManagerReleaseLabel(virSecurityManagerPtr mgr,
 static int virSecurityManagerCheckModel(virSecurityManagerPtr mgr,
                                         char *secmodel)
 {
+    int ret = -1;
     size_t i;
     virSecurityManagerPtr *sec_managers = NULL;
 
-    if ((sec_managers = virSecurityManagerGetNested(mgr)) == NULL)
-        return -1;
-
     if (STREQ_NULLABLE(secmodel, "none"))
         return 0;
 
+    if ((sec_managers = virSecurityManagerGetNested(mgr)) == NULL)
+        return -1;
+
     for (i = 0; sec_managers[i]; i++) {
-        if (STREQ_NULLABLE(secmodel, sec_managers[i]->drv->name))
-            return 0;
+        if (STREQ_NULLABLE(secmodel, sec_managers[i]->drv->name)) {
+            ret = 0;
+            goto cleanup;
+        }
     }
 
     virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                    _("Unable to find security driver for model %s"),
                    secmodel);
-    return -1;
+ cleanup:
+    VIR_FREE(sec_managers);
+    return ret;
 }