[libvirt] [PATCH] storage: fix crash when listing volumes or undefining a pool

The commit cad3cf9a951d26da9d2ee0f5b52fb1a2dbb74af1 introduced a crash due to wrong order of parameters being passed to the function. When deleting an element, the function decreased the iterator instead of count and if listing volumes after that (or undefining the pool, NULL was being dereferenced. Signed-off-by: Martin Kletzander <mkletzan@redhat.com> --- src/storage/storage_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index aaa0f02..85fc0f2 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1566,7 +1566,7 @@ storageVolDelete(virStorageVolPtr obj, vol->name, pool->def->name); virStorageVolDefFree(vol); - VIR_DELETE_ELEMENT(pool->volumes.objs, pool->volumes.count, i); + VIR_DELETE_ELEMENT(pool->volumes.objs, i, pool->volumes.count); break; } } -- 1.8.5.2

On 01/09/2014 08:35 AM, Martin Kletzander wrote:
The commit cad3cf9a951d26da9d2ee0f5b52fb1a2dbb74af1 introduced a crash due to wrong order of parameters being passed to the function. When deleting an element, the function decreased the iterator instead of count and if listing volumes after that (or undefining the pool, NULL was being dereferenced.
Signed-off-by: Martin Kletzander <mkletzan@redhat.com> --- src/storage/storage_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
ACK.
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index aaa0f02..85fc0f2 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1566,7 +1566,7 @@ storageVolDelete(virStorageVolPtr obj, vol->name, pool->def->name); virStorageVolDefFree(vol);
- VIR_DELETE_ELEMENT(pool->volumes.objs, pool->volumes.count, i); + VIR_DELETE_ELEMENT(pool->volumes.objs, i, pool->volumes.count); break; } }
-- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On Thu, Jan 09, 2014 at 08:41:11AM -0700, Eric Blake wrote:
On 01/09/2014 08:35 AM, Martin Kletzander wrote:
The commit cad3cf9a951d26da9d2ee0f5b52fb1a2dbb74af1 introduced a crash due to wrong order of parameters being passed to the function. When deleting an element, the function decreased the iterator instead of count and if listing volumes after that (or undefining the pool, NULL was being dereferenced.
Signed-off-by: Martin Kletzander <mkletzan@redhat.com> --- src/storage/storage_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
ACK.
Pushed, thanks. Martin
participants (2)
-
Eric Blake
-
Martin Kletzander