[PATCH 1/2] conf: avoid null deref during storage probe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit 5c43e2e introduced a NULL deref if there is a failure
in virStorageFileGetMetadataInternal.

* src/util/virstoragefile.c (virStorageFileGetMetadataFromBuf):
Fix error handling.

Signed-off-by: Eric Blake <eblake@xxxxxxxxxx>
---
 src/util/virstoragefile.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 1ce0fa1..dcce1ef 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -999,21 +999,21 @@ virStorageFileGetMetadataFromBuf(const char *path,
                                  int *backingFormat)
 {
     virStorageSourcePtr ret = NULL;
+    virStorageSourcePtr meta = NULL;

-    if (!(ret = virStorageFileMetadataNew(path, format)))
+    if (!(meta = virStorageFileMetadataNew(path, format)))
         return NULL;

-    if (virStorageFileGetMetadataInternal(ret, buf, len,
-                                          backingFormat) < 0) {
-        virStorageSourceFree(ret);
-        ret = NULL;
-    }
-
-    if (VIR_STRDUP(*backing, ret->backingStoreRaw) < 0) {
-        virStorageSourceFree(ret);
-        ret = NULL;
-    }
+    if (virStorageFileGetMetadataInternal(meta, buf, len,
+                                          backingFormat) < 0)
+        goto cleanup;
+    if (VIR_STRDUP(*backing, meta->backingStoreRaw) < 0)
+        goto cleanup;

+    ret = meta;
+    meta = NULL;
+ cleanup:
+    virStorageSourceFree(meta);
     return ret;
 }

-- 
1.9.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]