diff --git a/ChangeLog b/ChangeLog index 9d9c162e87..55da5a98ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue, 2 Dec 2008 16:58:16 +0100 Jim Meyering + + fix inadequate initialization in storage and test drivers + * src/storage_driver.c (storageListPools): Set all "names" entries to 0. + (storageListDefinedPools, storagePoolListVolumes): Likewise. + * src/test.c (testStoragePoolListVolumes): Likewise. + Tue Dec 2 13:45:00 CET 2008 Chris Lalancette * configure.in, src/storage_backend.c: Older distributions (i.e. RHEL-5) don't have udevadm at all, but they do have udevsettle. So diff --git a/src/storage_driver.c b/src/storage_driver.c index 366820b623..53388f1ebb 100644 --- a/src/storage_driver.c +++ b/src/storage_driver.c @@ -347,7 +347,7 @@ storageListPools(virConnectPtr conn, free(names[i]); names[i] = NULL; } - memset(names, 0, nnames); + memset(names, 0, nnames * sizeof(*names)); return -1; } @@ -389,7 +389,7 @@ storageListDefinedPools(virConnectPtr conn, free(names[i]); names[i] = NULL; } - memset(names, 0, nnames); + memset(names, 0, nnames * sizeof(*names)); return -1; } @@ -880,7 +880,7 @@ storagePoolListVolumes(virStoragePoolPtr obj, return -1; } - memset(names, 0, maxnames); + memset(names, 0, maxnames * sizeof(*names)); for (i = 0 ; i < pool->volumes.count && n < maxnames ; i++) { if ((names[n++] = strdup(pool->volumes.objs[i]->name)) == NULL) { virStorageReportError(obj->conn, VIR_ERR_NO_MEMORY, @@ -895,7 +895,7 @@ storagePoolListVolumes(virStoragePoolPtr obj, for (n = 0 ; n < maxnames ; n++) VIR_FREE(names[i]); - memset(names, 0, maxnames); + memset(names, 0, maxnames * sizeof(*names)); return -1; } diff --git a/src/test.c b/src/test.c index 7998886c57..3e942daff7 100644 --- a/src/test.c +++ b/src/test.c @@ -1951,7 +1951,7 @@ testStoragePoolListVolumes(virStoragePoolPtr obj, POOL_IS_ACTIVE(privpool, -1); int i = 0, n = 0; - memset(names, 0, maxnames); + memset(names, 0, maxnames * sizeof(*names)); for (i = 0 ; i < privpool->volumes.count && n < maxnames ; i++) { if ((names[n++] = strdup(privpool->volumes.objs[i]->name)) == NULL) { testError(obj->conn, VIR_ERR_NO_MEMORY, "%s", _("name")); @@ -1965,7 +1965,7 @@ testStoragePoolListVolumes(virStoragePoolPtr obj, for (n = 0 ; n < maxnames ; n++) VIR_FREE(names[i]); - memset(names, 0, maxnames); + memset(names, 0, maxnames * sizeof(*names)); return -1; }