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

Re: [libvirt] [PATCHv2] storage: avoid null deref and leak on failure



On 05/04/2011 12:52 PM, Eric Blake wrote:
Detected by clang.  NULL deref added in commit 343a27a (Mar 11),
but leak of voldef present since commit 2cd9b2d (Apr 09).

* src/storage/storage_driver.c (storageVolumeCreateXML): Don't
leak voldef or dereference null volobj.
---

v2: don't leave pool->volumes.objs pointing to stale memory on failure

  src/storage/storage_driver.c |    8 ++++++--
  1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index 1ea5d12..5118ffb 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -1,7 +1,7 @@
  /*
   * storage_driver.c: core driver for storage APIs
   *
- * Copyright (C) 2006-2010 Red Hat, Inc.
+ * Copyright (C) 2006-2011 Red Hat, Inc.
   * Copyright (C) 2006-2008 Daniel P. Berrange
   *
   * This library is free software; you can redistribute it and/or
@@ -1319,8 +1319,12 @@ storageVolumeCreateXML(virStoragePoolPtr obj,
      pool->volumes.objs[pool->volumes.count++] = voldef;
      volobj = virGetStorageVol(obj->conn, pool->def->name, voldef->name,
                                voldef->key);
+    if (!volobj) {
+        pool->volumes.count--;
+        goto cleanup;
+    }

-    if (volobj&&  backend->buildVol) {
+    if (backend->buildVol) {
          int buildret;
          virStorageVolDefPtr buildvoldef = NULL;


ACK.

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