]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix misc memory handling bugs
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 1 Apr 2009 10:21:34 +0000 (10:21 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 1 Apr 2009 10:21:34 +0000 (10:21 +0000)
ChangeLog
src/node_device.c
src/qemu_conf.c
src/storage_conf.c

index 22295abcf3b8a43f3129491bdea2b3cd27d541a0..1afec5929e30b0745ed178185933982a5f4c219b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Wed Apr  1 11:18:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
+
+       Misc memory handling fixes
+       * src/node_device.c: Don't strdup() a NULL parent device name
+       * src/qemu_conf.c: Don't try to access() a NULL alternative
+       binary name
+       * src/storage_conf.c: Don't free mode string while its still
+       in use
+
 Wed Apr  1 11:16:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
 
        * src/xm_internal.c: Add support for vifname= parameter in
index b435f1a81a46823e535c8ce088c65295436aab19..b84729f778758014c531d60c0cefda94e0f08942 100644 (file)
@@ -175,9 +175,14 @@ static char *nodeDeviceGetParent(virNodeDevicePtr dev)
         goto cleanup;
     }
 
-    ret = strdup(obj->def->parent);
-    if (!ret)
-        virReportOOMError(dev->conn);
+    if (obj->def->parent) {
+        ret = strdup(obj->def->parent);
+        if (!ret)
+            virReportOOMError(dev->conn);
+    } else {
+        virNodeDeviceReportError(dev->conn, VIR_ERR_INTERNAL_ERROR,
+                                 "%s", _("no parent for this device"));
+    }
 
 cleanup:
     if (obj)
index 50b903f2f98c8c0c4384b11c435e3430c7cae4fc..f36c927cb04d0a64de4cc7312f6241790990c40e 100644 (file)
@@ -269,7 +269,7 @@ qemudCapsInitGuest(virCapsPtr caps,
      * which can be used with magic cpu choice
      */
     hasbase = (access(info->binary, X_OK) == 0);
-    hasaltbase = (access(info->altbinary, X_OK) == 0);
+    hasaltbase = (info->altbinary && access(info->altbinary, X_OK) == 0);
 
     /* Can use acceleration for KVM/KQEMU if
      *  - host & guest arches match
index 1c9a4e5f02e743b3ad4bbb422965301cf23c542c..323551839ae5a88dda4183da128edec4dd4a36d7 100644 (file)
@@ -401,12 +401,13 @@ virStorageDefParsePerms(virConnectPtr conn,
     } else {
         char *end = NULL;
         perms->mode = strtol(mode, &end, 8);
-        VIR_FREE(mode);
         if (*end || perms->mode < 0 || perms->mode > 0777) {
+            VIR_FREE(mode);
             virStorageReportError(conn, VIR_ERR_XML_ERROR,
                                   "%s", _("malformed octal mode"));
             goto error;
         }
+        VIR_FREE(mode);
     }
 
     if (virXPathNode(conn, "./owner", ctxt) == NULL) {