On 8/3/23 12:36, Michal Privoznik wrote: > If one of previous commits taught us something, it's that: > sizeof(variable) and sizeof(type) are not the same. Especially > because for live enough code the type might change (e.g. as we > use autoptr more). And since we don't get any warnings when an > incorrect length is passed to memset() it is easy to mess up. But > with sizeof(variable) instead, it's not as easy. Therefore, > switch to using memset(variable, 0, sizeof(*variable)), or its > alternatives, depending on level of pointers. > > Signed-off-by: Michal Privoznik <mpriv...@redhat.com>
Reviewed-by: Claudio Fontana <cfont...@suse.de> > --- > src/qemu/qemu_monitor_json.c | 4 ++-- > src/qemu/qemu_process.c | 2 +- > src/remote/remote_driver.c | 2 +- > src/storage/storage_driver.c | 2 +- > src/test/test_driver.c | 4 ++-- > 5 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c > index 70536028ab..34c4b543e8 100644 > --- a/src/qemu/qemu_monitor_json.c > +++ b/src/qemu/qemu_monitor_json.c > @@ -7112,7 +7112,7 @@ qemuMonitorJSONSetIOThread(qemuMonitor *mon, > > #define VIR_IOTHREAD_SET_PROP_UL(propName, propVal) \ > if (iothreadInfo->set_##propVal) { \ > - memset(&prop, 0, sizeof(qemuMonitorJSONObjectProperty)); \ > + memset(&prop, 0, sizeof(prop)); \ > prop.type = QEMU_MONITOR_OBJECT_PROPERTY_ULONG; \ > prop.val.ul = iothreadInfo->propVal; \ > if (qemuMonitorJSONSetObjectProperty(mon, path, propName, &prop) < > 0) \ > @@ -7145,7 +7145,7 @@ qemuMonitorJSONSetIOThread(qemuMonitor *mon, > > #define VIR_IOTHREAD_SET_PROP_INT(propName, propVal) \ > if (iothreadInfo->set_##propVal) { \ > - memset(&prop, 0, sizeof(qemuMonitorJSONObjectProperty)); \ > + memset(&prop, 0, sizeof(prop)); \ > prop.type = QEMU_MONITOR_OBJECT_PROPERTY_INT; \ > prop.val.iv = iothreadInfo->propVal; \ > if (qemuMonitorJSONSetObjectProperty(mon, path, propName, &prop) < > 0) \ > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > index 572b842349..0644f80161 100644 > --- a/src/qemu/qemu_process.c > +++ b/src/qemu/qemu_process.c > @@ -5068,7 +5068,7 @@ qemuProcessGraphicsSetupListen(virQEMUDriver *driver, > * *_auto_unix_socket set we should use unix socket as > * default instead of tcp listen. */ > if (useSocket) { > - memset(glisten, 0, sizeof(virDomainGraphicsListenDef)); > + memset(glisten, 0, sizeof(*glisten)); > glisten->socket = g_strdup_printf("%s/%s.sock", > priv->libDir, > type); > glisten->fromConfig = true; > diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c > index 8e78af0ea0..faad7292ed 100644 > --- a/src/remote/remote_driver.c > +++ b/src/remote/remote_driver.c > @@ -2138,7 +2138,7 @@ remoteDomainGetVcpus(virDomainPtr domain, > goto cleanup; > } > > - memset(info, 0, sizeof(virVcpuInfo) * maxinfo); > + memset(info, 0, sizeof(*info) * maxinfo); > memset(cpumaps, 0, maxinfo * maplen); > > for (i = 0; i < ret.info.info_len; ++i) { > diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c > index c19abdd2f3..5a9dcbd193 100644 > --- a/src/storage/storage_driver.c > +++ b/src/storage/storage_driver.c > @@ -1279,7 +1279,7 @@ storagePoolGetInfo(virStoragePoolPtr pool, > if (virStorageBackendForType(def->type) == NULL) > goto cleanup; > > - memset(info, 0, sizeof(virStoragePoolInfo)); > + memset(info, 0, sizeof(*info)); > if (virStoragePoolObjIsActive(obj)) > info->state = VIR_STORAGE_POOL_RUNNING; > else > diff --git a/src/test/test_driver.c b/src/test/test_driver.c > index 3767908d9d..4b8e02c684 100644 > --- a/src/test/test_driver.c > +++ b/src/test/test_driver.c > @@ -4826,7 +4826,7 @@ static int testDomainGetDiskErrors(virDomainPtr dom, > > if (errors) { > /* sanitize input */ > - memset(errors, 0, sizeof(virDomainDiskError) * nerrors); > + memset(errors, 0, sizeof(*errors) * nerrors); > > for (i = 0; i < nerrors; i++) { > errors[i].disk = g_strdup(vm->def->disks[i]->dst); > @@ -6878,7 +6878,7 @@ testStoragePoolGetInfo(virStoragePoolPtr pool, > return -1; > def = virStoragePoolObjGetDef(obj); > > - memset(info, 0, sizeof(virStoragePoolInfo)); > + memset(info, 0, sizeof(*info)); > if (virStoragePoolObjIsActive(obj)) > info->state = VIR_STORAGE_POOL_RUNNING; > else