[PATCH 11/13] lib: use struct zero initializer instead of memset

Claudio Fontana cfontana at suse.de
Thu Aug 3 12:23:47 UTC 2023


On 8/3/23 12:36, Michal Privoznik wrote:
> This is a more concise approach and guarantees there is
> no time window where the struct is uninitialized.
> 
> Generated using the following semantic patch:
> 
>   @@
>   type T;
>   identifier X;
>   @@
>   -  T X;
>   +  T X = { 0 };
>      ... when exists
>   (
>   -  memset(&X, 0, sizeof(X));
>   |
>   -  memset(&X, 0, sizeof(T));
>   )
> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>

Reviewed-by: Claudio Fontana <cfontana at suse.de>


> ---
>  src/ch/ch_monitor.c                    |   3 +-
>  src/conf/domain_conf.c                 |   8 +-
>  src/conf/network_conf.c                |  28 ++----
>  src/cpu/cpu_x86.c                      |   4 +-
>  src/esx/esx_driver.c                   |  20 ++---
>  src/esx/esx_interface_driver.c         |  13 +--
>  src/esx/esx_storage_backend_iscsi.c    |  11 +--
>  src/esx/esx_storage_backend_vmfs.c     |  19 ++--
>  src/esx/esx_util.c                     |   4 +-
>  src/libxl/libxl_driver.c               |   9 +-
>  src/locking/lock_driver_lockd.c        |  19 ++--
>  src/logging/log_manager.c              |  25 ++----
>  src/lxc/lxc_controller.c               |   6 +-
>  src/lxc/lxc_domain.c                   |   4 +-
>  src/lxc/lxc_driver.c                   |   4 +-
>  src/nwfilter/nwfilter_dhcpsnoop.c      |   4 +-
>  src/nwfilter/nwfilter_gentech_driver.c |   4 +-
>  src/qemu/qemu_agent.c                  |  10 +--
>  src/qemu/qemu_command.c                |   3 +-
>  src/qemu/qemu_driver.c                 |   7 +-
>  src/qemu/qemu_monitor.c                |   6 +-
>  src/qemu/qemu_monitor_json.c           |   7 +-
>  src/qemu/qemu_process.c                |   3 +-
>  src/remote/remote_daemon_dispatch.c    | 115 ++++++++-----------------
>  src/remote/remote_daemon_stream.c      |  23 ++---
>  src/remote/remote_driver.c             |  13 +--
>  src/rpc/virnetclientprogram.c          |   4 +-
>  src/rpc/virnetclientstream.c           |   9 +-
>  src/rpc/virnetdaemon.c                 |   3 +-
>  src/rpc/virnetsaslcontext.c            |   3 +-
>  src/rpc/virnetserverprogram.c          |  14 +--
>  src/rpc/virnetsocket.c                 |  49 +++--------
>  src/rpc/virnetsshsession.c             |   3 +-
>  src/storage/storage_backend_logical.c  |  10 +--
>  src/util/virarptable.c                 |   3 +-
>  src/util/virauth.c                     |   4 +-
>  src/util/virbpf.c                      |  52 +++--------
>  src/util/virdevmapper.c                |   8 +-
>  src/util/virfdstream.c                 |   3 +-
>  src/util/virfile.c                     |   3 +-
>  src/util/virinitctl.c                  |   4 +-
>  src/util/viriscsi.c                    |   4 +-
>  src/util/virlog.c                      |   9 +-
>  src/util/virnetdev.c                   |   8 +-
>  src/util/virnetdevbridge.c             |  10 +--
>  src/util/virnetdevip.c                 |   8 +-
>  src/util/virnetdevtap.c                |   3 +-
>  src/util/virperf.c                     |   3 +-
>  src/util/virprocess.c                  |   3 +-
>  src/util/virsocket.c                   |   6 +-
>  src/util/virsocketaddr.c               |   7 +-
>  src/util/viruri.c                      |   4 +-
>  src/vbox/vbox_storage.c                |  10 +--
>  src/vmx/vmx.c                          |   4 +-
>  tests/nsstest.c                        |   8 +-
>  tests/nwfilterxml2firewalltest.c       |   4 +-
>  tests/qemumonitorjsontest.c            |   6 +-
>  tests/qemumonitortestutils.c           |   8 +-
>  tests/qemuxml2argvtest.c               |   4 +-
>  tests/virhostcputest.c                 |   3 +-
>  tests/virnetmessagetest.c              |   8 +-
>  tools/nss/libvirt_nss.c                |   3 +-
>  tools/virsh-domain-monitor.c           |   3 +-
>  tools/virsh-domain.c                   |   4 +-
>  tools/vsh-table.c                      |   4 +-
>  65 files changed, 195 insertions(+), 483 deletions(-)
> 
> diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c
> index d902bc6959..a4b921931b 100644
> --- a/src/ch/ch_monitor.c
> +++ b/src/ch/ch_monitor.c
> @@ -468,7 +468,7 @@ virCHMonitorBuildVMJson(virDomainDef *vmdef,
>  static int
>  chMonitorCreateSocket(const char *socket_path)
>  {
> -    struct sockaddr_un addr;
> +    struct sockaddr_un addr = { 0 };
>      socklen_t addrlen = sizeof(addr);
>      int fd;
>  
> @@ -478,7 +478,6 @@ chMonitorCreateSocket(const char *socket_path)
>          goto error;
>      }
>  
> -    memset(&addr, 0, sizeof(addr));
>      addr.sun_family = AF_UNIX;
>      if (virStrcpyStatic(addr.sun_path, socket_path) < 0) {
>          virReportError(VIR_ERR_INTERNAL_ERROR,
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 5ac5c0b771..47693a49bf 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -28859,9 +28859,7 @@ int
>  virDomainGraphicsListenAppendAddress(virDomainGraphicsDef *def,
>                                       const char *address)
>  {
> -    virDomainGraphicsListenDef glisten;
> -
> -    memset(&glisten, 0, sizeof(glisten));
> +    virDomainGraphicsListenDef glisten = { 0 };
>  
>      glisten.type = VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS;
>  
> @@ -28877,9 +28875,7 @@ int
>  virDomainGraphicsListenAppendSocket(virDomainGraphicsDef *def,
>                                      const char *socketPath)
>  {
> -    virDomainGraphicsListenDef glisten;
> -
> -    memset(&glisten, 0, sizeof(glisten));
> +    virDomainGraphicsListenDef glisten = { 0 };
>  
>      glisten.type = VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET;
>  
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index 73788b6d87..3e137cb562 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -2748,11 +2748,9 @@ virNetworkDefUpdateIPDHCPHost(virNetworkDef *def,
>      size_t i;
>      int ret = -1;
>      virNetworkIPDef *ipdef = virNetworkIPDefByIndex(def, parentIndex);
> -    virNetworkDHCPHostDef host;
> +    virNetworkDHCPHostDef host = { 0 };
>      bool partialOkay = (command == VIR_NETWORK_UPDATE_COMMAND_DELETE);
>  
> -    memset(&host, 0, sizeof(host));
> -
>      if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0)
>          goto cleanup;
>  
> @@ -2881,9 +2879,7 @@ virNetworkDefUpdateIPDHCPRange(virNetworkDef *def,
>  {
>      size_t i;
>      virNetworkIPDef *ipdef = virNetworkIPDefByIndex(def, parentIndex);
> -    virNetworkDHCPRangeDef range;
> -
> -    memset(&range, 0, sizeof(range));
> +    virNetworkDHCPRangeDef range = { 0 };
>  
>      if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "range") < 0)
>          return -1;
> @@ -2990,9 +2986,7 @@ virNetworkDefUpdateForwardInterface(virNetworkDef *def,
>  {
>      size_t i;
>      int ret = -1;
> -    virNetworkForwardIfDef iface;
> -
> -    memset(&iface, 0, sizeof(iface));
> +    virNetworkForwardIfDef iface = { 0 };
>  
>      if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "interface") < 0)
>          goto cleanup;
> @@ -3094,9 +3088,7 @@ virNetworkDefUpdatePortGroup(virNetworkDef *def,
>      size_t i;
>      int foundName = -1, foundDefault = -1;
>      int ret = -1;
> -    virPortGroupDef portgroup;
> -
> -    memset(&portgroup, 0, sizeof(portgroup));
> +    virPortGroupDef portgroup = { 0 };
>  
>      if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "portgroup") < 0)
>          goto cleanup;
> @@ -3184,13 +3176,11 @@ virNetworkDefUpdateDNSHost(virNetworkDef *def,
>      size_t i, j, k;
>      int foundIdx = -1, ret = -1;
>      virNetworkDNSDef *dns = &def->dns;
> -    virNetworkDNSHostDef host;
> +    virNetworkDNSHostDef host = { 0 };
>      bool isAdd = (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
>                    command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
>      int foundCt = 0;
>  
> -    memset(&host, 0, sizeof(host));
> -
>      if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
>          virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
>                         _("DNS HOST records cannot be modified, "
> @@ -3283,13 +3273,11 @@ virNetworkDefUpdateDNSSrv(virNetworkDef *def,
>      size_t i;
>      int foundIdx = -1, ret = -1;
>      virNetworkDNSDef *dns = &def->dns;
> -    virNetworkDNSSrvDef srv;
> +    virNetworkDNSSrvDef srv = { 0 };
>      bool isAdd = (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
>                    command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
>      int foundCt = 0;
>  
> -    memset(&srv, 0, sizeof(srv));
> -
>      if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
>          virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
>                         _("DNS SRV records cannot be modified, "
> @@ -3368,12 +3356,10 @@ virNetworkDefUpdateDNSTxt(virNetworkDef *def,
>  {
>      int foundIdx, ret = -1;
>      virNetworkDNSDef *dns = &def->dns;
> -    virNetworkDNSTxtDef txt;
> +    virNetworkDNSTxtDef txt = { 0 };
>      bool isAdd = (command == VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST ||
>                    command == VIR_NETWORK_UPDATE_COMMAND_ADD_LAST);
>  
> -    memset(&txt, 0, sizeof(txt));
> -
>      if (command == VIR_NETWORK_UPDATE_COMMAND_MODIFY) {
>          virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
>                         _("DNS TXT records cannot be modified, "
> diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
> index 3c0163c4d1..b9513e24d5 100644
> --- a/src/cpu/cpu_x86.c
> +++ b/src/cpu/cpu_x86.c
> @@ -1073,9 +1073,7 @@ static int
>  x86ParseMSR(xmlNodePtr node,
>              virCPUx86DataItem *item)
>  {
> -    virCPUx86MSR msr;
> -
> -    memset(&msr, 0, sizeof(msr));
> +    virCPUx86MSR msr = { 0 };
>  
>      if (virXMLPropUInt(node, "index", 0, VIR_XML_PROP_REQUIRED, &msr.index) < 0)
>          return -1;
> diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
> index 0d1b10fe8b..b243bbf411 100644
> --- a/src/esx/esx_driver.c
> +++ b/src/esx/esx_driver.c
> @@ -2536,14 +2536,12 @@ esxDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
>      g_autofree char *url = NULL;
>      g_autofree char *vmx = NULL;
>      virVMXContext ctx;
> -    esxVMX_Data data;
> +    esxVMX_Data data = { 0 };
>      g_autoptr(virDomainDef) def = NULL;
>      char *xml = NULL;
>  
>      virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS, NULL);
>  
> -    memset(&data, 0, sizeof(data));
> -
>      if (esxVI_EnsureSession(priv->primary) < 0)
>          return NULL;
>  
> @@ -2622,14 +2620,12 @@ esxConnectDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat,
>  {
>      esxPrivate *priv = conn->privateData;
>      virVMXContext ctx;
> -    esxVMX_Data data;
> +    esxVMX_Data data = { 0 };
>      g_autoptr(virDomainDef) def = NULL;
>      char *xml = NULL;
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&data, 0, sizeof(data));
> -
>      if (STRNEQ(nativeFormat, VMX_CONFIG_FORMAT_ARGV)) {
>          virReportError(VIR_ERR_INVALID_ARG,
>                         _("Unsupported config format '%1$s'"), nativeFormat);
> @@ -2665,14 +2661,12 @@ esxConnectDomainXMLToNative(virConnectPtr conn, const char *nativeFormat,
>      esxPrivate *priv = conn->privateData;
>      int virtualHW_version;
>      virVMXContext ctx;
> -    esxVMX_Data data;
> +    esxVMX_Data data = { 0 };
>      g_autoptr(virDomainDef) def = NULL;
>      char *vmx = NULL;
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&data, 0, sizeof(data));
> -
>      if (STRNEQ(nativeFormat, VMX_CONFIG_FORMAT_ARGV)) {
>          virReportError(VIR_ERR_INVALID_ARG,
>                         _("Unsupported config format '%1$s'"), nativeFormat);
> @@ -2870,7 +2864,7 @@ esxDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
>      esxVI_ObjectContent *virtualMachine = NULL;
>      int virtualHW_version;
>      virVMXContext ctx;
> -    esxVMX_Data data;
> +    esxVMX_Data data = { 0 };
>      g_autofree char *datastoreName = NULL;
>      g_autofree char *directoryName = NULL;
>      g_autofree char *escapedName = NULL;
> @@ -2892,8 +2886,6 @@ esxDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
>      if (flags & VIR_DOMAIN_DEFINE_VALIDATE)
>          parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA;
>  
> -    memset(&data, 0, sizeof(data));
> -
>      if (esxVI_EnsureSession(priv->primary) < 0)
>          return NULL;
>  
> @@ -4058,14 +4050,12 @@ esxDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
>      esxVI_VirtualMachineSnapshotTree *rootSnapshotList = NULL;
>      esxVI_VirtualMachineSnapshotTree *snapshotTree = NULL;
>      esxVI_VirtualMachineSnapshotTree *snapshotTreeParent = NULL;
> -    virDomainSnapshotDef def;
> +    virDomainSnapshotDef def = { 0 };
>      char uuid_string[VIR_UUID_STRING_BUFLEN] = "";
>      char *xml = NULL;
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&def, 0, sizeof(def));
> -
>      if (esxVI_EnsureSession(priv->primary) < 0)
>          return NULL;
>  
> diff --git a/src/esx/esx_interface_driver.c b/src/esx/esx_interface_driver.c
> index d6b6410d1a..125155da99 100644
> --- a/src/esx/esx_interface_driver.c
> +++ b/src/esx/esx_interface_driver.c
> @@ -157,21 +157,16 @@ esxInterfaceGetXMLDesc(virInterfacePtr iface, unsigned int flags)
>      char *xml = NULL;
>      esxPrivate *priv = iface->conn->privateData;
>      esxVI_PhysicalNic *physicalNic = NULL;
> -    virInterfaceDef def;
> +    virInterfaceDef def = { 0 };
>      bool hasAddress = false;
>      virInterfaceProtocolDef *protocols;
> -    virInterfaceProtocolDef protocol;
> -    virSocketAddr socketAddress;
> +    virInterfaceProtocolDef protocol = { 0 };
> +    virSocketAddr socketAddress = { 0 };
>      virInterfaceIPDef *ips;
> -    virInterfaceIPDef ip;
> +    virInterfaceIPDef ip = { 0 };
>  
>      virCheckFlags(VIR_INTERFACE_XML_INACTIVE, NULL);
>  
> -    memset(&def, 0, sizeof(def));
> -    memset(&protocol, 0, sizeof(protocol));
> -    memset(&socketAddress, 0, sizeof(socketAddress));
> -    memset(&ip, 0, sizeof(ip));
> -
>      if (esxVI_EnsureSession(priv->primary) < 0 ||
>          esxVI_LookupPhysicalNicByMACAddress(priv->primary, iface->mac,
>                                              &physicalNic,
> diff --git a/src/esx/esx_storage_backend_iscsi.c b/src/esx/esx_storage_backend_iscsi.c
> index 087365392b..c00b1e4f32 100644
> --- a/src/esx/esx_storage_backend_iscsi.c
> +++ b/src/esx/esx_storage_backend_iscsi.c
> @@ -302,12 +302,10 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
>      esxPrivate *priv = pool->conn->privateData;
>      esxVI_HostInternetScsiHba *hostInternetScsiHba = NULL;
>      esxVI_HostInternetScsiHbaStaticTarget *target;
> -    virStoragePoolDef def;
> +    virStoragePoolDef def = { 0 };
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&def, 0, sizeof(def));
> -
>      if (esxVI_LookupHostInternetScsiHba(priv->primary, &hostInternetScsiHba))
>          goto cleanup;
>  
> @@ -664,20 +662,17 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume,
>  {
>      char *xml = NULL;
>      esxPrivate *priv = volume->conn->privateData;
> -    virStoragePoolDef pool;
> +    virStoragePoolDef pool = { 0 };
>      esxVI_ScsiLun *scsiLunList = NULL;
>      esxVI_ScsiLun *scsiLun;
>      esxVI_HostScsiDisk *hostScsiDisk = NULL;
> -    virStorageVolDef def;
> +    virStorageVolDef def = { 0 };
>      /* VIR_CRYPTO_HASH_SIZE_MD5 = VIR_UUID_BUFLEN = 16 */
>      unsigned char md5[VIR_CRYPTO_HASH_SIZE_MD5];
>      char uuid_string[VIR_UUID_STRING_BUFLEN] = "";
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&pool, 0, sizeof(pool));
> -    memset(&def, 0, sizeof(def));
> -
>      if (esxVI_LookupScsiLunList(priv->primary, &scsiLunList) < 0)
>          goto cleanup;
>  
> diff --git a/src/esx/esx_storage_backend_vmfs.c b/src/esx/esx_storage_backend_vmfs.c
> index f00c7eec4e..7c5df1c9cd 100644
> --- a/src/esx/esx_storage_backend_vmfs.c
> +++ b/src/esx/esx_storage_backend_vmfs.c
> @@ -442,15 +442,13 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
>      esxVI_DatastoreHostMount *hostMount = NULL;
>      esxVI_DynamicProperty *dynamicProperty = NULL;
>      esxVI_Boolean accessible = esxVI_Boolean_Undefined;
> -    virStoragePoolDef def;
> +    virStoragePoolDef def = { 0 };
>      esxVI_DatastoreInfo *info = NULL;
>      esxVI_NasDatastoreInfo *nasInfo = NULL;
>      char *xml = NULL;
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&def, 0, sizeof(def));
> -
>      if (esxVI_String_AppendValueListToList(&propertyNameList,
>                                             "summary.accessible\0"
>                                             "summary.capacity\0"
> @@ -833,7 +831,7 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
>  {
>      virStorageVolPtr volume = NULL;
>      esxPrivate *priv = pool->conn->privateData;
> -    virStoragePoolDef poolDef;
> +    virStoragePoolDef poolDef = { 0 };
>      char *tmp;
>      g_autofree char *unescapedDatastorePath = NULL;
>      g_autofree char *unescapedDirectoryName = NULL;
> @@ -853,8 +851,6 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&poolDef, 0, sizeof(poolDef));
> -
>      if (esxLookupVMFSStoragePoolType(priv->primary, pool->name,
>                                       &poolDef.type) < 0) {
>          goto cleanup;
> @@ -1032,7 +1028,7 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
>  {
>      virStorageVolPtr volume = NULL;
>      esxPrivate *priv = pool->conn->privateData;
> -    virStoragePoolDef poolDef;
> +    virStoragePoolDef poolDef = { 0 };
>      g_autofree char *sourceDatastorePath = NULL;
>      char *tmp;
>      g_autofree char *unescapedDatastorePath = NULL;
> @@ -1052,8 +1048,6 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&poolDef, 0, sizeof(poolDef));
> -
>      if (esxLookupVMFSStoragePoolType(priv->primary, pool->name,
>                                       &poolDef.type) < 0) {
>          goto cleanup;
> @@ -1312,20 +1306,17 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume,
>                          unsigned int flags)
>  {
>      esxPrivate *priv = volume->conn->privateData;
> -    virStoragePoolDef pool;
> +    virStoragePoolDef pool = { 0 };
>      g_autofree char *datastorePath = NULL;
>      esxVI_FileInfo *fileInfo = NULL;
>      esxVI_VmDiskFileInfo *vmDiskFileInfo = NULL;
>      esxVI_IsoImageFileInfo *isoImageFileInfo = NULL;
>      esxVI_FloppyImageFileInfo *floppyImageFileInfo = NULL;
> -    virStorageVolDef def;
> +    virStorageVolDef def = { 0 };
>      char *xml = NULL;
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&pool, 0, sizeof(pool));
> -    memset(&def, 0, sizeof(def));
> -
>      if (esxLookupVMFSStoragePoolType(priv->primary, volume->pool,
>                                       &pool.type) < 0) {
>          return NULL;
> diff --git a/src/esx/esx_util.c b/src/esx/esx_util.c
> index fbbf226555..785701a518 100644
> --- a/src/esx/esx_util.c
> +++ b/src/esx/esx_util.c
> @@ -272,13 +272,11 @@ esxUtil_ParseDatastorePath(const char *datastorePath, char **datastoreName,
>  int
>  esxUtil_ResolveHostname(const char *hostname, char **ipAddress)
>  {
> -    struct addrinfo hints;
> +    struct addrinfo hints = { 0 };
>      struct addrinfo *result = NULL;
>      int errcode;
>      g_autofree char *address = NULL;
>  
> -    memset(&hints, 0, sizeof(hints));
> -
>      hints.ai_flags = AI_ADDRCONFIG;
>      hints.ai_family = AF_INET;
>      hints.ai_socktype = SOCK_STREAM;
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 2644d1400a..3d10f45850 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -1796,7 +1796,7 @@ libxlDoDomainSave(libxlDriverPrivate *driver,
>                    bool managed)
>  {
>      libxlDriverConfig *cfg = libxlDriverConfigGet(driver);
> -    libxlSavefileHeader hdr;
> +    libxlSavefileHeader hdr = { 0 };
>      virObjectEvent *event = NULL;
>      g_autofree char *xml = NULL;
>      uint32_t xml_len;
> @@ -1821,7 +1821,6 @@ libxlDoDomainSave(libxlDriverPrivate *driver,
>          goto cleanup;
>      xml_len = strlen(xml) + 1;
>  
> -    memset(&hdr, 0, sizeof(hdr));
>      memcpy(hdr.magic, LIBXL_SAVE_MAGIC, sizeof(hdr.magic));
>      hdr.version = LIBXL_SAVE_VERSION;
>      hdr.xmlLen = xml_len;
> @@ -5651,7 +5650,7 @@ libxlDomainBlockStats(virDomainPtr dom,
>                        virDomainBlockStatsPtr stats)
>  {
>      virDomainObj *vm;
> -    libxlBlockStats blkstats;
> +    libxlBlockStats blkstats = { 0 };
>      int ret = -1;
>  
>      if (!(vm = libxlDomObjFromDomain(dom)))
> @@ -5666,7 +5665,6 @@ libxlDomainBlockStats(virDomainPtr dom,
>      if (virDomainObjCheckActive(vm) < 0)
>          goto endjob;
>  
> -    memset(&blkstats, 0, sizeof(libxlBlockStats));
>      if ((ret = libxlDomainBlockStatsGather(vm, path, &blkstats)) < 0)
>          goto endjob;
>  
> @@ -5695,7 +5693,7 @@ libxlDomainBlockStatsFlags(virDomainPtr dom,
>                             unsigned int flags)
>  {
>      virDomainObj *vm;
> -    libxlBlockStats blkstats;
> +    libxlBlockStats blkstats = { 0 };
>      int nstats;
>      int ret = -1;
>  
> @@ -5722,7 +5720,6 @@ libxlDomainBlockStatsFlags(virDomainPtr dom,
>          goto endjob;
>      }
>  
> -    memset(&blkstats, 0, sizeof(libxlBlockStats));
>      if ((ret = libxlDomainBlockStatsGather(vm, path, &blkstats)) < 0)
>          goto endjob;
>  
> diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
> index 6b294e2954..d75302dd0a 100644
> --- a/src/locking/lock_driver_lockd.c
> +++ b/src/locking/lock_driver_lockd.c
> @@ -138,9 +138,7 @@ virLockManagerLockDaemonConnectionRegister(virLockManager *lock,
>                                             int *counter)
>  {
>      virLockManagerLockDaemonPrivate *priv = lock->privateData;
> -    virLockSpaceProtocolRegisterArgs args;
> -
> -    memset(&args, 0, sizeof(args));
> +    virLockSpaceProtocolRegisterArgs args = { 0 };
>  
>      args.flags = 0;
>      memcpy(args.owner.uuid, priv->uuid, VIR_UUID_BUFLEN);
> @@ -167,9 +165,7 @@ virLockManagerLockDaemonConnectionRestrict(virLockManager *lock G_GNUC_UNUSED,
>                                             virNetClientProgram *program,
>                                             int *counter)
>  {
> -    virLockSpaceProtocolRestrictArgs args;
> -
> -    memset(&args, 0, sizeof(args));
> +    virLockSpaceProtocolRestrictArgs args = { 0 };
>  
>      args.flags = 0;
>  
> @@ -259,11 +255,10 @@ static int virLockManagerLockDaemonSetupLockspace(const char *path)
>  {
>      virNetClient *client;
>      virNetClientProgram *program = NULL;
> -    virLockSpaceProtocolCreateLockSpaceArgs args;
> +    virLockSpaceProtocolCreateLockSpaceArgs args = { 0 };
>      int rv = -1;
>      int counter = 0;
>  
> -    memset(&args, 0, sizeof(args));
>      args.path = (char*)path;
>  
>      if (!(client = virLockManagerLockDaemonConnectionNew(geteuid() == 0, &program)))
> @@ -671,9 +666,7 @@ static int virLockManagerLockDaemonAcquire(virLockManager *lock,
>      if (!(flags & VIR_LOCK_MANAGER_ACQUIRE_REGISTER_ONLY)) {
>          size_t i;
>          for (i = 0; i < priv->nresources; i++) {
> -            virLockSpaceProtocolAcquireResourceArgs args;
> -
> -            memset(&args, 0, sizeof(args));
> +            virLockSpaceProtocolAcquireResourceArgs args = { 0 };
>  
>              args.path = priv->resources[i].lockspace;
>              args.name = priv->resources[i].name;
> @@ -726,9 +719,7 @@ static int virLockManagerLockDaemonRelease(virLockManager *lock,
>          goto cleanup;
>  
>      for (i = 0; i < priv->nresources; i++) {
> -        virLockSpaceProtocolReleaseResourceArgs args;
> -
> -        memset(&args, 0, sizeof(args));
> +        virLockSpaceProtocolReleaseResourceArgs args = { 0 };
>  
>          if (priv->resources[i].lockspace)
>              args.path = priv->resources[i].lockspace;
> diff --git a/src/logging/log_manager.c b/src/logging/log_manager.c
> index 6e8e7e9f1a..d8490f4e5a 100644
> --- a/src/logging/log_manager.c
> +++ b/src/logging/log_manager.c
> @@ -149,15 +149,12 @@ virLogManagerDomainOpenLogFile(virLogManager *mgr,
>                                 ino_t *inode,
>                                 off_t *offset)
>  {
> -    struct virLogManagerProtocolDomainOpenLogFileArgs args;
> -    struct virLogManagerProtocolDomainOpenLogFileRet ret;
> +    struct virLogManagerProtocolDomainOpenLogFileArgs args = { 0 };
> +    struct virLogManagerProtocolDomainOpenLogFileRet ret = { 0 };
>      int *fdout = NULL;
>      size_t fdoutlen = 0;
>      int rv = -1;
>  
> -    memset(&args, 0, sizeof(args));
> -    memset(&ret, 0, sizeof(ret));
> -
>      args.driver = (char *)driver;
>      memcpy(args.dom.uuid, domuuid, VIR_UUID_BUFLEN);
>      args.dom.name = (char *)domname;
> @@ -208,11 +205,8 @@ virLogManagerDomainGetLogFilePosition(virLogManager *mgr,
>                                        ino_t *inode,
>                                        off_t *offset)
>  {
> -    struct virLogManagerProtocolDomainGetLogFilePositionArgs args;
> -    struct virLogManagerProtocolDomainGetLogFilePositionRet ret;
> -
> -    memset(&args, 0, sizeof(args));
> -    memset(&ret, 0, sizeof(ret));
> +    struct virLogManagerProtocolDomainGetLogFilePositionArgs args = { 0 };
> +    struct virLogManagerProtocolDomainGetLogFilePositionRet ret = { 0 };
>  
>      args.path = (char *)path;
>      args.flags = flags;
> @@ -241,11 +235,8 @@ virLogManagerDomainReadLogFile(virLogManager *mgr,
>                                 size_t maxlen,
>                                 unsigned int flags)
>  {
> -    struct virLogManagerProtocolDomainReadLogFileArgs args;
> -    struct virLogManagerProtocolDomainReadLogFileRet ret;
> -
> -    memset(&args, 0, sizeof(args));
> -    memset(&ret, 0, sizeof(ret));
> +    struct virLogManagerProtocolDomainReadLogFileArgs args = { 0 };
> +    struct virLogManagerProtocolDomainReadLogFileRet ret = { 0 };
>  
>      args.path = (char *)path;
>      args.flags = flags;
> @@ -275,11 +266,9 @@ virLogManagerDomainAppendMessage(virLogManager *mgr,
>                                   const char *message,
>                                   unsigned int flags)
>  {
> -    struct virLogManagerProtocolDomainAppendLogFileArgs args;
> +    struct virLogManagerProtocolDomainAppendLogFileArgs args = { 0 };
>      struct virLogManagerProtocolDomainAppendLogFileRet ret;
>  
> -    memset(&args, 0, sizeof(args));
> -
>      args.driver = (char *)driver;
>      memcpy(args.dom.uuid, domuuid, VIR_UUID_BUFLEN);
>      args.dom.name = (char *)domname;
> diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
> index 86dcd880e8..51459b47e7 100644
> --- a/src/lxc/lxc_controller.c
> +++ b/src/lxc/lxc_controller.c
> @@ -2235,10 +2235,9 @@ static int
>  virLXCControllerEventSendExit(virLXCController *ctrl,
>                                int exitstatus)
>  {
> -    virLXCMonitorExitEventMsg msg;
> +    virLXCMonitorExitEventMsg msg = { 0 };
>  
>      VIR_DEBUG("Exit status %d (client=%p)", exitstatus, ctrl->client);
> -    memset(&msg, 0, sizeof(msg));
>      switch (exitstatus) {
>      case 0:
>          msg.status = VIR_LXC_MONITOR_EXIT_STATUS_SHUTDOWN;
> @@ -2272,10 +2271,9 @@ static int
>  virLXCControllerEventSendInit(virLXCController *ctrl,
>                                pid_t initpid)
>  {
> -    virLXCMonitorInitEventMsg msg;
> +    virLXCMonitorInitEventMsg msg = { 0 };
>  
>      VIR_DEBUG("Init pid %lld", (long long)initpid);
> -    memset(&msg, 0, sizeof(msg));
>      msg.initpid = initpid;
>  
>      virLXCControllerEventSend(ctrl,
> diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c
> index e8c87423bf..cf9bf96a4e 100644
> --- a/src/lxc/lxc_domain.c
> +++ b/src/lxc/lxc_domain.c
> @@ -339,13 +339,11 @@ virLXCDomainSetRunlevel(virDomainObj *vm,
>                          int runlevel)
>  {
>      virLXCDomainObjPrivate *priv = vm->privateData;
> -    lxcDomainInitctlCallbackData data;
> +    lxcDomainInitctlCallbackData data = { 0 };
>      size_t nfifos = 0;
>      size_t i;
>      int ret = -1;
>  
> -    memset(&data, 0, sizeof(data));
> -
>      data.runlevel = runlevel;
>  
>      for (nfifos = 0; virInitctlFifos[nfifos]; nfifos++)
> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> index 3bc01cbc23..f284798f1c 100644
> --- a/src/lxc/lxc_driver.c
> +++ b/src/lxc/lxc_driver.c
> @@ -3327,9 +3327,7 @@ lxcDomainAttachDeviceMknod(virLXCDriver *driver,
>                             char *file)
>  {
>      virLXCDomainObjPrivate *priv = vm->privateData;
> -    struct lxcDomainAttachDeviceMknodData data;
> -
> -    memset(&data, 0, sizeof(data));
> +    struct lxcDomainAttachDeviceMknodData data = { 0 };
>  
>      data.driver = driver;
>      data.mode = mode;
> diff --git a/src/nwfilter/nwfilter_dhcpsnoop.c b/src/nwfilter/nwfilter_dhcpsnoop.c
> index 3dc0b777e9..2f89923856 100644
> --- a/src/nwfilter/nwfilter_dhcpsnoop.c
> +++ b/src/nwfilter/nwfilter_dhcpsnoop.c
> @@ -817,7 +817,7 @@ virNWFilterSnoopDHCPDecode(virNWFilterSnoopReq *req,
>      struct iphdr *pip;
>      struct udphdr *pup;
>      virNWFilterSnoopDHCPHdr *pd;
> -    virNWFilterSnoopIPLease ipl;
> +    virNWFilterSnoopIPLease ipl = { 0 };
>      uint8_t mtype;
>      uint32_t leasetime;
>      uint32_t nwint;
> @@ -863,8 +863,6 @@ virNWFilterSnoopDHCPDecode(virNWFilterSnoopReq *req,
>      if (virNWFilterSnoopDHCPGetOpt(pd, len, &mtype, &leasetime) < 0)
>          return -2;
>  
> -    memset(&ipl, 0, sizeof(ipl));
> -
>      memcpy(&nwint, &pd->d_yiaddr, sizeof(nwint));
>      virSocketAddrSetIPv4AddrNetOrder(&ipl.ipAddress, nwint);
>  
> diff --git a/src/nwfilter/nwfilter_gentech_driver.c b/src/nwfilter/nwfilter_gentech_driver.c
> index 72e24e2f08..41f270bb7c 100644
> --- a/src/nwfilter/nwfilter_gentech_driver.c
> +++ b/src/nwfilter/nwfilter_gentech_driver.c
> @@ -463,7 +463,7 @@ virNWFilterDoInstantiate(virNWFilterTechDriver *techdriver,
>                           bool forceWithPendingReq)
>  {
>      int rc;
> -    virNWFilterInst inst;
> +    virNWFilterInst inst = { 0 };
>      bool instantiate = true;
>      g_autofree char *buf = NULL;
>      virNWFilterVarValue *lv;
> @@ -471,8 +471,6 @@ virNWFilterDoInstantiate(virNWFilterTechDriver *techdriver,
>      bool reportIP = false;
>      g_autoptr(GHashTable) missing_vars = virHashNew(virNWFilterVarValueHashFree);
>  
> -    memset(&inst, 0, sizeof(inst));
> -
>      rc = virNWFilterDetermineMissingVarsRec(filter,
>                                              binding->filterparams,
>                                              missing_vars,
> diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
> index eda1308097..7fc412c17e 100644
> --- a/src/qemu/qemu_agent.c
> +++ b/src/qemu/qemu_agent.c
> @@ -149,7 +149,7 @@ static void qemuAgentDispose(void *obj)
>  static int
>  qemuAgentOpenUnix(const char *socketpath)
>  {
> -    struct sockaddr_un addr;
> +    struct sockaddr_un addr = { 0 };
>      int agentfd;
>  
>      if ((agentfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
> @@ -165,7 +165,6 @@ qemuAgentOpenUnix(const char *socketpath)
>          goto error;
>      }
>  
> -    memset(&addr, 0, sizeof(addr));
>      addr.sun_family = AF_UNIX;
>      if (virStrcpyStatic(addr.sun_path, socketpath) < 0) {
>          virReportError(VIR_ERR_INTERNAL_ERROR,
> @@ -803,11 +802,9 @@ qemuAgentGuestSyncSend(qemuAgent *agent,
>      g_autofree char *txMsg = NULL;
>      g_autoptr(virJSONValue) rxObj = NULL;
>      unsigned long long id;
> -    qemuAgentMessage sync_msg;
> +    qemuAgentMessage sync_msg = { 0 };
>      int rc;
>  
> -    memset(&sync_msg, 0, sizeof(sync_msg));
> -
>      if (virTimeMillisNow(&id) < 0)
>          return -1;
>  
> @@ -1015,12 +1012,11 @@ qemuAgentCommandFull(qemuAgent *agent,
>                       bool report_unsupported)
>  {
>      int ret = -1;
> -    qemuAgentMessage msg;
> +    qemuAgentMessage msg = { 0 };
>      g_autofree char *cmdstr = NULL;
>      int await_event = agent->await_event;
>  
>      *reply = NULL;
> -    memset(&msg, 0, sizeof(msg));
>  
>      if (!agent->running) {
>          virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 64af0b5ea9..77c5335bde 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -4868,7 +4868,7 @@ qemuBuildSCSIHostdevDevProps(const virDomainDef *def,
>  int
>  qemuOpenChrChardevUNIXSocket(const virDomainChrSourceDef *dev)
>  {
> -    struct sockaddr_un addr;
> +    struct sockaddr_un addr = { 0 };
>      socklen_t addrlen = sizeof(addr);
>      int fd;
>  
> @@ -4878,7 +4878,6 @@ qemuOpenChrChardevUNIXSocket(const virDomainChrSourceDef *dev)
>          goto error;
>      }
>  
> -    memset(&addr, 0, sizeof(addr));
>      addr.sun_family = AF_UNIX;
>      if (virStrcpyStatic(addr.sun_path, dev->data.nix.path) < 0) {
>          virReportError(VIR_ERR_INTERNAL_ERROR,
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 1f388306f4..f8039160f4 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -14933,8 +14933,8 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
>      qemuDomainObjPrivate *priv;
>      virDomainDef *def = NULL;
>      virDomainDef *persistentDef = NULL;
> -    virDomainBlockIoTuneInfo info;
> -    virDomainBlockIoTuneInfo conf_info;
> +    virDomainBlockIoTuneInfo info = { 0 };
> +    virDomainBlockIoTuneInfo conf_info = { 0 };
>      int ret = -1;
>      size_t i;
>      virDomainDiskDef *conf_disk = NULL;
> @@ -14995,9 +14995,6 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
>                                 NULL) < 0)
>          return -1;
>  
> -    memset(&info, 0, sizeof(info));
> -    memset(&conf_info, 0, sizeof(conf_info));
> -
>      if (!(vm = qemuDomainObjFromDomain(dom)))
>          return -1;
>  
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index c680c4b804..db34b6c179 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -227,7 +227,7 @@ qemuMonitorDispose(void *obj)
>  static int
>  qemuMonitorOpenUnix(const char *monitor)
>  {
> -    struct sockaddr_un addr;
> +    struct sockaddr_un addr = { 0 };
>      VIR_AUTOCLOSE monfd = -1;
>      int ret = -1;
>  
> @@ -237,7 +237,6 @@ qemuMonitorOpenUnix(const char *monitor)
>          return -1;
>      }
>  
> -    memset(&addr, 0, sizeof(addr));
>      addr.sun_family = AF_UNIX;
>      if (virStrcpyStatic(addr.sun_path, monitor) < 0) {
>          virReportError(VIR_ERR_INTERNAL_ERROR,
> @@ -309,13 +308,12 @@ qemuMonitorIOWriteWithFD(qemuMonitor *mon,
>                           size_t len,
>                           int fd)
>  {
> -    struct msghdr msg;
> +    struct msghdr msg = { 0 };
>      struct iovec iov[1];
>      int ret;
>      char control[CMSG_SPACE(sizeof(int))];
>      struct cmsghdr *cmsg;
>  
> -    memset(&msg, 0, sizeof(msg));
>      memset(control, 0, sizeof(control));
>  
>      iov[0].iov_base = (void *)data;
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index d9e9a4481c..70536028ab 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -259,13 +259,11 @@ qemuMonitorJSONCommandWithFd(qemuMonitor *mon,
>                               virJSONValue **reply)
>  {
>      int ret = -1;
> -    qemuMonitorMessage msg;
> +    qemuMonitorMessage msg = { 0 };
>      g_auto(virBuffer) cmdbuf = VIR_BUFFER_INITIALIZER;
>  
>      *reply = NULL;
>  
> -    memset(&msg, 0, sizeof(msg));
> -
>      if (virJSONValueObjectHasKey(cmd, "execute")) {
>          g_autofree char *id = qemuMonitorNextCommandID(mon);
>  
> @@ -2035,10 +2033,9 @@ qemuMonitorJSONSetMemoryStatsPeriod(qemuMonitor *mon,
>                                      char *balloonpath,
>                                      int period)
>  {
> -    qemuMonitorJSONObjectProperty prop;
> +    qemuMonitorJSONObjectProperty prop = { 0 };
>  
>      /* Set to the value in memballoon (could enable or disable) */
> -    memset(&prop, 0, sizeof(qemuMonitorJSONObjectProperty));
>      prop.type = QEMU_MONITOR_OBJECT_PROPERTY_INT;
>      prop.val.iv = period;
>      if (qemuMonitorJSONSetObjectProperty(mon, balloonpath,
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index db06991450..572b842349 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -2226,14 +2226,13 @@ qemuRefreshRTC(virDomainObj *vm)
>  {
>      qemuDomainObjPrivate *priv = vm->privateData;
>      time_t now, then;
> -    struct tm thenbits;
> +    struct tm thenbits = { 0 };
>      long localOffset;
>      int rv;
>  
>      if (vm->def->clock.offset != VIR_DOMAIN_CLOCK_OFFSET_VARIABLE)
>          return;
>  
> -    memset(&thenbits, 0, sizeof(thenbits));
>      qemuDomainObjEnterMonitor(vm);
>      now = time(NULL);
>      rv = qemuMonitorGetRTCTime(priv->mon, &thenbits);
> diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon_dispatch.c
> index 7144e9e7ca..2bb9e306a4 100644
> --- a/src/remote/remote_daemon_dispatch.c
> +++ b/src/remote/remote_daemon_dispatch.c
> @@ -313,7 +313,7 @@ remoteRelayDomainEventLifecycle(virConnectPtr conn,
>                                  void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_lifecycle_msg data;
> +    remote_domain_event_lifecycle_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -323,7 +323,6 @@ remoteRelayDomainEventLifecycle(virConnectPtr conn,
>                event, detail, callback->callbackID, callback->legacy);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>      data.event = event;
>      data.detail = detail;
> @@ -352,7 +351,7 @@ remoteRelayDomainEventReboot(virConnectPtr conn,
>                               void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_reboot_msg data;
> +    remote_domain_event_reboot_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -362,7 +361,6 @@ remoteRelayDomainEventReboot(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID, callback->legacy);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>  
>      if (callback->legacy) {
> @@ -389,7 +387,7 @@ remoteRelayDomainEventRTCChange(virConnectPtr conn,
>                                  void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_rtc_change_msg data;
> +    remote_domain_event_rtc_change_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -400,7 +398,6 @@ remoteRelayDomainEventRTCChange(virConnectPtr conn,
>                callback->callbackID, callback->legacy);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>      data.offset = offset;
>  
> @@ -428,7 +425,7 @@ remoteRelayDomainEventWatchdog(virConnectPtr conn,
>                                 void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_watchdog_msg data;
> +    remote_domain_event_watchdog_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -438,7 +435,6 @@ remoteRelayDomainEventWatchdog(virConnectPtr conn,
>                dom->name, dom->id, action, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>      data.action = action;
>  
> @@ -468,7 +464,7 @@ remoteRelayDomainEventIOError(virConnectPtr conn,
>                                void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_io_error_msg data;
> +    remote_domain_event_io_error_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -479,7 +475,6 @@ remoteRelayDomainEventIOError(virConnectPtr conn,
>                callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.srcPath = g_strdup(srcPath);
>      data.devAlias = g_strdup(devAlias);
>      make_nonnull_domain(&data.dom, dom);
> @@ -512,7 +507,7 @@ remoteRelayDomainEventIOErrorReason(virConnectPtr conn,
>                                      void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_io_error_reason_msg data;
> +    remote_domain_event_io_error_reason_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -523,7 +518,6 @@ remoteRelayDomainEventIOErrorReason(virConnectPtr conn,
>                callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.srcPath = g_strdup(srcPath);
>      data.devAlias = g_strdup(devAlias);
>      data.reason = g_strdup(reason);
> @@ -558,7 +552,7 @@ remoteRelayDomainEventGraphics(virConnectPtr conn,
>                                 void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_graphics_msg data;
> +    remote_domain_event_graphics_msg data = { 0 };
>      size_t i;
>  
>      if (callback->callbackID < 0 ||
> @@ -576,7 +570,6 @@ remoteRelayDomainEventGraphics(virConnectPtr conn,
>          VIR_DEBUG("  %s=%s", subject->identities[i].type, subject->identities[i].name);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.phase = phase;
>      data.local.family = local->family;
>      data.remote.family = remote->family;
> @@ -625,7 +618,7 @@ remoteRelayDomainEventBlockJob(virConnectPtr conn,
>                                 void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_block_job_msg data;
> +    remote_domain_event_block_job_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -635,7 +628,6 @@ remoteRelayDomainEventBlockJob(virConnectPtr conn,
>                dom->name, dom->id, path, type, status, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.path = g_strdup(path);
>      data.type = type;
>      data.status = status;
> @@ -664,7 +656,7 @@ remoteRelayDomainEventControlError(virConnectPtr conn,
>                                     void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_control_error_msg data;
> +    remote_domain_event_control_error_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -674,7 +666,6 @@ remoteRelayDomainEventControlError(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>  
>      if (callback->legacy) {
> @@ -704,7 +695,7 @@ remoteRelayDomainEventDiskChange(virConnectPtr conn,
>                                   void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_disk_change_msg data;
> +    remote_domain_event_disk_change_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -715,7 +706,6 @@ remoteRelayDomainEventDiskChange(virConnectPtr conn,
>                callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      if (oldSrcPath) {
>          data.oldSrcPath = g_new0(remote_nonnull_string, 1);
>          *(data.oldSrcPath) = g_strdup(oldSrcPath);
> @@ -755,7 +745,7 @@ remoteRelayDomainEventTrayChange(virConnectPtr conn,
>                                   void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_tray_change_msg data;
> +    remote_domain_event_tray_change_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -765,8 +755,6 @@ remoteRelayDomainEventTrayChange(virConnectPtr conn,
>                dom->name, dom->id, devAlias, reason, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
> -
>      data.devAlias = g_strdup(devAlias);
>      data.reason = reason;
>      make_nonnull_domain(&data.dom, dom);
> @@ -794,7 +782,7 @@ remoteRelayDomainEventPMWakeup(virConnectPtr conn,
>                                 void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_pmwakeup_msg data;
> +    remote_domain_event_pmwakeup_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -804,7 +792,6 @@ remoteRelayDomainEventPMWakeup(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>  
>      if (callback->legacy) {
> @@ -830,7 +817,7 @@ remoteRelayDomainEventPMSuspend(virConnectPtr conn,
>                                  void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_pmsuspend_msg data;
> +    remote_domain_event_pmsuspend_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -840,7 +827,6 @@ remoteRelayDomainEventPMSuspend(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>  
>      if (callback->legacy) {
> @@ -866,7 +852,7 @@ remoteRelayDomainEventBalloonChange(virConnectPtr conn,
>                                      void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_balloon_change_msg data;
> +    remote_domain_event_balloon_change_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -876,7 +862,6 @@ remoteRelayDomainEventBalloonChange(virConnectPtr conn,
>                dom->name, dom->id, actual, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>      data.actual = actual;
>  
> @@ -904,7 +889,7 @@ remoteRelayDomainEventPMSuspendDisk(virConnectPtr conn,
>                                      void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_pmsuspend_disk_msg data;
> +    remote_domain_event_pmsuspend_disk_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -914,7 +899,6 @@ remoteRelayDomainEventPMSuspendDisk(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_domain(&data.dom, dom);
>  
>      if (callback->legacy) {
> @@ -940,7 +924,7 @@ remoteRelayDomainEventDeviceRemoved(virConnectPtr conn,
>                                      void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_device_removed_msg data;
> +    remote_domain_event_device_removed_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -950,8 +934,6 @@ remoteRelayDomainEventDeviceRemoved(virConnectPtr conn,
>                dom->name, dom->id, devAlias, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
> -
>      data.devAlias = g_strdup(devAlias);
>  
>      make_nonnull_domain(&data.dom, dom);
> @@ -984,7 +966,7 @@ remoteRelayDomainEventBlockJob2(virConnectPtr conn,
>                                  void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_block_job_2_msg data;
> +    remote_domain_event_block_job_2_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -994,7 +976,6 @@ remoteRelayDomainEventBlockJob2(virConnectPtr conn,
>                dom->name, dom->id, dst, type, status, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.callbackID = callback->callbackID;
>      data.dst = g_strdup(dst);
>      data.type = type;
> @@ -1017,7 +998,7 @@ remoteRelayDomainEventTunable(virConnectPtr conn,
>                                void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_callback_tunable_msg data;
> +    remote_domain_event_callback_tunable_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1027,8 +1008,6 @@ remoteRelayDomainEventTunable(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID, params, nparams);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
> -
>      if (virTypedParamsSerialize(params, nparams,
>                                  REMOTE_DOMAIN_EVENT_TUNABLE_MAX,
>                                  (struct _virTypedParameterRemote **) &data.params.params_val,
> @@ -1057,7 +1036,7 @@ remoteRelayDomainEventAgentLifecycle(virConnectPtr conn,
>                                       void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_callback_agent_lifecycle_msg data;
> +    remote_domain_event_callback_agent_lifecycle_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1068,7 +1047,6 @@ remoteRelayDomainEventAgentLifecycle(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID, state, reason);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.callbackID = callback->callbackID;
>      make_nonnull_domain(&data.dom, dom);
>      data.state = state;
> @@ -1090,7 +1068,7 @@ remoteRelayDomainEventDeviceAdded(virConnectPtr conn,
>                                    void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_callback_device_added_msg data;
> +    remote_domain_event_callback_device_added_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1100,8 +1078,6 @@ remoteRelayDomainEventDeviceAdded(virConnectPtr conn,
>                dom->name, dom->id, devAlias, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
> -
>      data.devAlias = g_strdup(devAlias);
>      make_nonnull_domain(&data.dom, dom);
>      data.callbackID = callback->callbackID;
> @@ -1122,7 +1098,7 @@ remoteRelayDomainEventMigrationIteration(virConnectPtr conn,
>                                           void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_callback_migration_iteration_msg data;
> +    remote_domain_event_callback_migration_iteration_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1133,7 +1109,6 @@ remoteRelayDomainEventMigrationIteration(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID, iteration);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.callbackID = callback->callbackID;
>      make_nonnull_domain(&data.dom, dom);
>  
> @@ -1156,7 +1131,7 @@ remoteRelayDomainEventJobCompleted(virConnectPtr conn,
>                                     void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_callback_job_completed_msg data;
> +    remote_domain_event_callback_job_completed_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1167,8 +1142,6 @@ remoteRelayDomainEventJobCompleted(virConnectPtr conn,
>                dom->name, dom->id, callback->callbackID, params, nparams);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
> -
>      if (virTypedParamsSerialize(params, nparams,
>                                  REMOTE_DOMAIN_JOB_STATS_MAX,
>                                  (struct _virTypedParameterRemote **) &data.params.params_val,
> @@ -1194,7 +1167,7 @@ remoteRelayDomainEventDeviceRemovalFailed(virConnectPtr conn,
>                                            void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_callback_device_removal_failed_msg data;
> +    remote_domain_event_callback_device_removal_failed_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1204,8 +1177,6 @@ remoteRelayDomainEventDeviceRemovalFailed(virConnectPtr conn,
>                dom->name, dom->id, devAlias, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
> -
>      data.devAlias = g_strdup(devAlias);
>  
>      make_nonnull_domain(&data.dom, dom);
> @@ -1228,7 +1199,7 @@ remoteRelayDomainEventMetadataChange(virConnectPtr conn,
>                                       void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_callback_metadata_change_msg data;
> +    remote_domain_event_callback_metadata_change_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1238,8 +1209,6 @@ remoteRelayDomainEventMetadataChange(virConnectPtr conn,
>                dom->name, dom->id, type, NULLSTR(nsuri), callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
> -
>      data.type = type;
>      if (nsuri) {
>          data.nsuri = g_new0(remote_nonnull_string, 1);
> @@ -1268,7 +1237,7 @@ remoteRelayDomainEventBlockThreshold(virConnectPtr conn,
>                                       void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_block_threshold_msg data;
> +    remote_domain_event_block_threshold_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
> @@ -1278,7 +1247,6 @@ remoteRelayDomainEventBlockThreshold(virConnectPtr conn,
>                dom->name, dom->id, dev, NULLSTR(path), threshold, excess, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.callbackID = callback->callbackID;
>      data.dev = g_strdup(dev);
>      if (path) {
> @@ -1306,14 +1274,13 @@ remoteRelayDomainEventMemoryFailure(virConnectPtr conn,
>                                      void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_memory_failure_msg data;
> +    remote_domain_event_memory_failure_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
>          return -1;
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.callbackID = callback->callbackID;
>      data.recipient = recipient;
>      data.action = action;
> @@ -1336,14 +1303,13 @@ remoteRelayDomainEventMemoryDeviceSizeChange(virConnectPtr conn,
>                                               void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_domain_event_memory_device_size_change_msg data;
> +    remote_domain_event_memory_device_size_change_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainEventCheckACL(callback->client, conn, dom))
>          return -1;
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.callbackID = callback->callbackID;
>      data.alias = g_strdup(alias);
>      data.size = size;
> @@ -1397,7 +1363,7 @@ remoteRelayNetworkEventLifecycle(virConnectPtr conn,
>                                   void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_network_event_lifecycle_msg data;
> +    remote_network_event_lifecycle_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayNetworkEventCheckACL(callback->client, conn, net))
> @@ -1407,7 +1373,6 @@ remoteRelayNetworkEventLifecycle(virConnectPtr conn,
>                event, detail, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_network(&data.net, net);
>      data.callbackID = callback->callbackID;
>      data.event = event;
> @@ -1434,7 +1399,7 @@ remoteRelayStoragePoolEventLifecycle(virConnectPtr conn,
>                                       void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_storage_pool_event_lifecycle_msg data;
> +    remote_storage_pool_event_lifecycle_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayStoragePoolEventCheckACL(callback->client, conn, pool))
> @@ -1444,7 +1409,6 @@ remoteRelayStoragePoolEventLifecycle(virConnectPtr conn,
>                event, detail, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_storage_pool(&data.pool, pool);
>      data.callbackID = callback->callbackID;
>      data.event = event;
> @@ -1464,7 +1428,7 @@ remoteRelayStoragePoolEventRefresh(virConnectPtr conn,
>                                     void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_storage_pool_event_refresh_msg data;
> +    remote_storage_pool_event_refresh_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayStoragePoolEventCheckACL(callback->client, conn, pool))
> @@ -1474,7 +1438,6 @@ remoteRelayStoragePoolEventRefresh(virConnectPtr conn,
>                callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_storage_pool(&data.pool, pool);
>      data.callbackID = callback->callbackID;
>  
> @@ -1501,7 +1464,7 @@ remoteRelayNodeDeviceEventLifecycle(virConnectPtr conn,
>                                      void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_node_device_event_lifecycle_msg data;
> +    remote_node_device_event_lifecycle_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayNodeDeviceEventCheckACL(callback->client, conn, dev))
> @@ -1511,7 +1474,6 @@ remoteRelayNodeDeviceEventLifecycle(virConnectPtr conn,
>                event, detail, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_node_device(&data.dev, dev);
>      data.callbackID = callback->callbackID;
>      data.event = event;
> @@ -1531,7 +1493,7 @@ remoteRelayNodeDeviceEventUpdate(virConnectPtr conn,
>                                   void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_node_device_event_update_msg data;
> +    remote_node_device_event_update_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayNodeDeviceEventCheckACL(callback->client, conn, dev))
> @@ -1541,7 +1503,6 @@ remoteRelayNodeDeviceEventUpdate(virConnectPtr conn,
>                callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_node_device(&data.dev, dev);
>      data.callbackID = callback->callbackID;
>  
> @@ -1568,7 +1529,7 @@ remoteRelaySecretEventLifecycle(virConnectPtr conn,
>                                  void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_secret_event_lifecycle_msg data;
> +    remote_secret_event_lifecycle_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelaySecretEventCheckACL(callback->client, conn, secret))
> @@ -1578,7 +1539,6 @@ remoteRelaySecretEventLifecycle(virConnectPtr conn,
>                event, detail, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_secret(&data.secret, secret);
>      data.callbackID = callback->callbackID;
>      data.event = event;
> @@ -1598,7 +1558,7 @@ remoteRelaySecretEventValueChanged(virConnectPtr conn,
>                                     void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    remote_secret_event_value_changed_msg data;
> +    remote_secret_event_value_changed_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelaySecretEventCheckACL(callback->client, conn, secret))
> @@ -1608,7 +1568,6 @@ remoteRelaySecretEventValueChanged(virConnectPtr conn,
>                callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      make_nonnull_secret(&data.secret, secret);
>      data.callbackID = callback->callbackID;
>  
> @@ -1637,7 +1596,7 @@ remoteRelayDomainQemuMonitorEvent(virConnectPtr conn,
>                                    void *opaque)
>  {
>      daemonClientEventCallback *callback = opaque;
> -    qemu_domain_monitor_event_msg data;
> +    qemu_domain_monitor_event_msg data = { 0 };
>  
>      if (callback->callbackID < 0 ||
>          !remoteRelayDomainQemuMonitorEventCheckACL(callback->client, conn,
> @@ -1648,7 +1607,6 @@ remoteRelayDomainQemuMonitorEvent(virConnectPtr conn,
>                event, details, callback->callbackID);
>  
>      /* build return data */
> -    memset(&data, 0, sizeof(data));
>      data.callbackID = callback->callbackID;
>      data.event = g_strdup(event);
>      data.seconds = seconds;
> @@ -2677,14 +2635,13 @@ remoteDispatchNodeGetSecurityModel(virNetServer *server G_GNUC_UNUSED,
>                                     struct virNetMessageError *rerr,
>                                     remote_node_get_security_model_ret *ret)
>  {
> -    virSecurityModel secmodel;
> +    virSecurityModel secmodel = { 0 };
>      int rv = -1;
>      virConnectPtr conn = remoteGetHypervisorConn(client);
>  
>      if (!conn)
>          goto cleanup;
>  
> -    memset(&secmodel, 0, sizeof(secmodel));
>      if (virNodeGetSecurityModel(conn, &secmodel) < 0)
>          goto cleanup;
>  
> diff --git a/src/remote/remote_daemon_stream.c b/src/remote/remote_daemon_stream.c
> index f52af790c1..1a89ff822c 100644
> --- a/src/remote/remote_daemon_stream.c
> +++ b/src/remote/remote_daemon_stream.c
> @@ -226,12 +226,11 @@ daemonStreamEvent(virStreamPtr st, int events, void *opaque)
>          (events & (VIR_STREAM_EVENT_ERROR | VIR_STREAM_EVENT_HANGUP))) {
>          int ret;
>          virNetMessage *msg;
> -        virNetMessageError rerr;
> +        virNetMessageError rerr = { 0 };
>          virErrorPtr origErr;
>  
>          virErrorPreserveLast(&origErr);
>  
> -        memset(&rerr, 0, sizeof(rerr));
>          stream->closed = true;
>          virStreamEventRemoveCallback(stream->st);
>          virStreamAbort(stream->st);
> @@ -565,13 +564,11 @@ daemonStreamHandleWriteData(virNetServerClient *client,
>          /* Blocking, so indicate we have more todo later */
>          return 1;
>      } else if (ret < 0) {
> -        virNetMessageError rerr;
> +        virNetMessageError rerr = { 0 };
>          virErrorPtr err;
>  
>          virErrorPreserveLast(&err);
>  
> -        memset(&rerr, 0, sizeof(rerr));
> -
>          VIR_INFO("Stream send failed");
>          stream->closed = true;
>          virStreamEventRemoveCallback(stream->st);
> @@ -613,8 +610,8 @@ daemonStreamHandleFinish(virNetServerClient *client,
>      ret = virStreamFinish(stream->st);
>  
>      if (ret < 0) {
> -        virNetMessageError rerr;
> -        memset(&rerr, 0, sizeof(rerr));
> +        virNetMessageError rerr = { 0 };
> +
>          return virNetServerProgramSendReplyError(stream->prog,
>                                                   client,
>                                                   msg,
> @@ -663,8 +660,8 @@ daemonStreamHandleAbort(virNetServerClient *client,
>      }
>  
>      if (raise_error) {
> -        virNetMessageError rerr;
> -        memset(&rerr, 0, sizeof(rerr));
> +        virNetMessageError rerr = { 0 };
> +
>          return virNetServerProgramSendReplyError(stream->prog,
>                                                   client,
>                                                   msg,
> @@ -709,9 +706,7 @@ daemonStreamHandleHole(virNetServerClient *client,
>      ret = virStreamSendHole(stream->st, data.length, data.flags);
>  
>      if (ret < 0) {
> -        virNetMessageError rerr;
> -
> -        memset(&rerr, 0, sizeof(rerr));
> +        virNetMessageError rerr = { 0 };
>  
>          VIR_INFO("Stream send hole failed");
>          stream->closed = true;
> @@ -825,7 +820,7 @@ daemonStreamHandleRead(virNetServerClient *client,
>                         daemonClientStream *stream)
>  {
>      virNetMessage *msg = NULL;
> -    virNetMessageError rerr;
> +    virNetMessageError rerr = { 0 };
>      char *buffer;
>      size_t bufferLen = VIR_NET_MESSAGE_LEGACY_PAYLOAD_MAX;
>      int ret = -1;
> @@ -848,8 +843,6 @@ daemonStreamHandleRead(virNetServerClient *client,
>      if (!stream->tx)
>          return 0;
>  
> -    memset(&rerr, 0, sizeof(rerr));
> -
>      buffer = g_new0(char, bufferLen);
>  
>      if (!(msg = virNetMessageNew(false)))
> diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
> index 7ccf550dff..8e78af0ea0 100644
> --- a/src/remote/remote_driver.c
> +++ b/src/remote/remote_driver.c
> @@ -1184,10 +1184,9 @@ doRemoteOpen(virConnectPtr conn,
>  
>      /* Now try and find out what URI the daemon used */
>      if (conn->uri == NULL) {
> -        remote_connect_get_uri_ret uriret;
> +        remote_connect_get_uri_ret uriret = { 0 };
>  
>          VIR_DEBUG("Trying to query remote URI");
> -        memset(&uriret, 0, sizeof(uriret));
>          if (call(conn, priv, 0,
>                   REMOTE_PROC_CONNECT_GET_URI,
>                   (xdrproc_t) xdr_void, (char *) NULL,
> @@ -3725,9 +3724,9 @@ static int
>  remoteAuthSASL(virConnectPtr conn, struct private_data *priv,
>                 virConnectAuthPtr auth, const char *wantmech)
>  {
> -    remote_auth_sasl_init_ret iret;
> +    remote_auth_sasl_init_ret iret = { 0 };
>      remote_auth_sasl_start_args sargs = {0};
> -    remote_auth_sasl_start_ret sret;
> +    remote_auth_sasl_start_ret sret = { 0 };
>      const char *clientout;
>      char *serverin = NULL;
>      size_t clientoutlen, serverinlen;
> @@ -3739,9 +3738,7 @@ remoteAuthSASL(virConnectPtr conn, struct private_data *priv,
>      const char *mechlist;
>      virNetSASLContext *saslCtxt;
>      virNetSASLSession *sasl = NULL;
> -    struct remoteAuthInteractState state;
> -
> -    memset(&state, 0, sizeof(state));
> +    struct remoteAuthInteractState state = { 0 };
>  
>      VIR_DEBUG("Client initialize SASL authentication");
>  
> @@ -3787,7 +3784,6 @@ remoteAuthSASL(virConnectPtr conn, struct private_data *priv,
>          goto cleanup;
>  
>      /* First call is to inquire about supported mechanisms in the server */
> -    memset(&iret, 0, sizeof(iret));
>      if (call(conn, priv, 0, REMOTE_PROC_AUTH_SASL_INIT,
>               (xdrproc_t) xdr_void, (char *)NULL,
>               (xdrproc_t) xdr_remote_auth_sasl_init_ret, (char *) &iret) != 0)
> @@ -3841,7 +3837,6 @@ remoteAuthSASL(virConnectPtr conn, struct private_data *priv,
>                mech, clientoutlen, clientout);
>  
>      /* Now send the initial auth data to the server */
> -    memset(&sret, 0, sizeof(sret));
>      if (call(conn, priv, 0, REMOTE_PROC_AUTH_SASL_START,
>               (xdrproc_t) xdr_remote_auth_sasl_start_args, (char *) &sargs,
>               (xdrproc_t) xdr_remote_auth_sasl_start_ret, (char *) &sret) != 0)
> diff --git a/src/rpc/virnetclientprogram.c b/src/rpc/virnetclientprogram.c
> index abc8e6798a..31eee72fc8 100644
> --- a/src/rpc/virnetclientprogram.c
> +++ b/src/rpc/virnetclientprogram.c
> @@ -116,11 +116,9 @@ static int
>  virNetClientProgramDispatchError(virNetClientProgram *prog G_GNUC_UNUSED,
>                                   virNetMessage *msg)
>  {
> -    virNetMessageError err;
> +    virNetMessageError err = { 0 };
>      int ret = -1;
>  
> -    memset(&err, 0, sizeof(err));
> -
>      if (virNetMessageDecodePayload(msg, (xdrproc_t)xdr_virNetMessageError, &err) < 0)
>          goto cleanup;
>  
> diff --git a/src/rpc/virnetclientstream.c b/src/rpc/virnetclientstream.c
> index 21e9332134..98034d737d 100644
> --- a/src/rpc/virnetclientstream.c
> +++ b/src/rpc/virnetclientstream.c
> @@ -261,7 +261,7 @@ void virNetClientStreamSetClosed(virNetClientStream *st,
>  int virNetClientStreamSetError(virNetClientStream *st,
>                                 virNetMessage *msg)
>  {
> -    virNetMessageError err;
> +    virNetMessageError err = { 0 };
>      int ret = -1;
>  
>      virObjectLock(st);
> @@ -270,7 +270,6 @@ int virNetClientStreamSetError(virNetClientStream *st,
>          VIR_DEBUG("Overwriting existing stream error %s", NULLSTR(st->err.message));
>  
>      virResetError(&st->err);
> -    memset(&err, 0, sizeof(err));
>  
>      if (virNetMessageDecodePayload(msg, (xdrproc_t)xdr_virNetMessageError, &err) < 0)
>          goto cleanup;
> @@ -444,13 +443,12 @@ virNetClientStreamHandleHole(virNetClient *client,
>                               virNetClientStream *st)
>  {
>      virNetMessage *msg;
> -    virNetStreamHole data;
> +    virNetStreamHole data = { 0 };
>      int ret = -1;
>  
>      VIR_DEBUG("client=%p st=%p", client, st);
>  
>      msg = st->rx;
> -    memset(&data, 0, sizeof(data));
>  
>      /* We should not be called unless there's VIR_NET_STREAM_HOLE
>       * message at the head of the list. But doesn't hurt to check */
> @@ -634,7 +632,7 @@ virNetClientStreamSendHole(virNetClientStream *st,
>                             unsigned int flags)
>  {
>      virNetMessage *msg = NULL;
> -    virNetStreamHole data;
> +    virNetStreamHole data = { 0 };
>      int ret = -1;
>  
>      VIR_DEBUG("st=%p length=%llu", st, length);
> @@ -645,7 +643,6 @@ virNetClientStreamSendHole(virNetClientStream *st,
>          return -1;
>      }
>  
> -    memset(&data, 0, sizeof(data));
>      data.length = length;
>      data.flags = flags;
>  
> diff --git a/src/rpc/virnetdaemon.c b/src/rpc/virnetdaemon.c
> index d37984d207..9795418126 100644
> --- a/src/rpc/virnetdaemon.c
> +++ b/src/rpc/virnetdaemon.c
> @@ -692,7 +692,7 @@ virNetDaemonAddSignalHandler(virNetDaemon *dmn,
>                               void *opaque)
>  {
>      g_autofree virNetDaemonSignal *sigdata = NULL;
> -    struct sigaction sig_action;
> +    struct sigaction sig_action = { 0 };
>      VIR_LOCK_GUARD lock = virObjectLockGuard(dmn);
>  
>      if (virNetDaemonSignalSetup(dmn) < 0)
> @@ -706,7 +706,6 @@ virNetDaemonAddSignalHandler(virNetDaemon *dmn,
>      sigdata->func = func;
>      sigdata->opaque = opaque;
>  
> -    memset(&sig_action, 0, sizeof(sig_action));
>      sig_action.sa_sigaction = virNetDaemonSignalHandler;
>      sig_action.sa_flags = SA_SIGINFO;
>      sigemptyset(&sig_action.sa_mask);
> diff --git a/src/rpc/virnetsaslcontext.c b/src/rpc/virnetsaslcontext.c
> index 7151225cc3..8692703117 100644
> --- a/src/rpc/virnetsaslcontext.c
> +++ b/src/rpc/virnetsaslcontext.c
> @@ -331,7 +331,7 @@ int virNetSASLSessionSecProps(virNetSASLSession *sasl,
>                                int maxSSF,
>                                bool allowAnonymous)
>  {
> -    sasl_security_properties_t secprops;
> +    sasl_security_properties_t secprops = { 0 };
>      int err;
>      int ret = -1;
>  
> @@ -339,7 +339,6 @@ int virNetSASLSessionSecProps(virNetSASLSession *sasl,
>                minSSF, maxSSF, allowAnonymous, sasl->maxbufsize);
>  
>      virObjectLock(sasl);
> -    memset(&secprops, 0, sizeof(secprops));
>  
>      secprops.min_ssf = minSSF;
>      secprops.max_ssf = maxSSF;
> diff --git a/src/rpc/virnetserverprogram.c b/src/rpc/virnetserverprogram.c
> index 2cce188a09..b1236bf49b 100644
> --- a/src/rpc/virnetserverprogram.c
> +++ b/src/rpc/virnetserverprogram.c
> @@ -229,12 +229,11 @@ int virNetServerProgramUnknownError(virNetServerClient *client,
>                                      virNetMessage *msg,
>                                      struct virNetMessageHeader *req)
>  {
> -    virNetMessageError rerr;
> +    virNetMessageError rerr = { 0 };
>  
>      virReportError(VIR_ERR_RPC,
>                     _("Cannot find program %1$d version %2$d"), req->prog, req->vers);
>  
> -    memset(&rerr, 0, sizeof(rerr));
>      return virNetServerProgramSendError(req->prog,
>                                          req->vers,
>                                          client,
> @@ -273,9 +272,7 @@ int virNetServerProgramDispatch(virNetServerProgram *prog,
>                                  virNetMessage *msg)
>  {
>      int ret = -1;
> -    virNetMessageError rerr;
> -
> -    memset(&rerr, 0, sizeof(rerr));
> +    virNetMessageError rerr = { 0 };
>  
>      VIR_DEBUG("prog=%d ver=%d type=%d status=%d serial=%u proc=%d",
>                msg->header.prog, msg->header.vers, msg->header.type,
> @@ -369,12 +366,10 @@ virNetServerProgramDispatchCall(virNetServerProgram *prog,
>      g_autofree char *ret = NULL;
>      int rv = -1;
>      virNetServerProgramProc *dispatcher = NULL;
> -    virNetMessageError rerr;
> +    virNetMessageError rerr = { 0 };
>      size_t i;
>      g_autoptr(virIdentity) identity = NULL;
>  
> -    memset(&rerr, 0, sizeof(rerr));
> -
>      if (msg->header.status != VIR_NET_OK) {
>          virReportError(VIR_ERR_RPC,
>                         _("Unexpected message status %1$u"),
> @@ -533,11 +528,10 @@ int virNetServerProgramSendStreamHole(virNetServerProgram *prog,
>                                        long long length,
>                                        unsigned int flags)
>  {
> -    virNetStreamHole data;
> +    virNetStreamHole data = { 0 };
>  
>      VIR_DEBUG("client=%p msg=%p length=%lld", client, msg, length);
>  
> -    memset(&data, 0, sizeof(data));
>      data.length = length;
>      data.flags = flags;
>  
> diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
> index 910fb8dd67..b58f7a6b8f 100644
> --- a/src/rpc/virnetsocket.c
> +++ b/src/rpc/virnetsocket.c
> @@ -143,11 +143,10 @@ virNetSocketCheckProtocolByLookup(const char *address,
>                                    int family,
>                                    bool *hasFamily)
>  {
> -    struct addrinfo hints;
> +    struct addrinfo hints = { 0 };
>      struct addrinfo *ai = NULL;
>      int gaierr;
>  
> -    memset(&hints, 0, sizeof(hints));
>      hints.ai_family = family;
>      hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
>      hints.ai_socktype = SOCK_STREAM;
> @@ -313,7 +312,7 @@ int virNetSocketNewListenTCP(const char *nodename,
>      virNetSocket **socks = NULL;
>      size_t nsocks = 0;
>      struct addrinfo *ai = NULL;
> -    struct addrinfo hints;
> +    struct addrinfo hints = { 0 };
>      int fd = -1;
>      size_t i;
>      int socketErrno = 0;
> @@ -326,7 +325,6 @@ int virNetSocketNewListenTCP(const char *nodename,
>      *retsocks = NULL;
>      *nretsocks = 0;
>  
> -    memset(&hints, 0, sizeof(hints));
>      hints.ai_family = family;
>      hints.ai_flags = AI_PASSIVE;
>      hints.ai_socktype = SOCK_STREAM;
> @@ -353,9 +351,7 @@ int virNetSocketNewListenTCP(const char *nodename,
>  
>      runp = ai;
>      while (runp) {
> -        virSocketAddr addr;
> -
> -        memset(&addr, 0, sizeof(addr));
> +        virSocketAddr addr = { 0 };
>  
>          if ((fd = socket(runp->ai_family, runp->ai_socktype,
>                           runp->ai_protocol)) < 0) {
> @@ -477,14 +473,12 @@ int virNetSocketNewListenUNIX(const char *path,
>                                gid_t grp,
>                                virNetSocket **retsock)
>  {
> -    virSocketAddr addr;
> +    virSocketAddr addr = { 0 };
>      mode_t oldmask;
>      int fd;
>  
>      *retsock = NULL;
>  
> -    memset(&addr, 0, sizeof(addr));
> -
>      addr.len = sizeof(addr.data.un);
>  
>      if ((fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
> @@ -553,11 +547,9 @@ int virNetSocketNewListenFD(int fd,
>                              bool unlinkUNIX,
>                              virNetSocket **retsock)
>  {
> -    virSocketAddr addr;
> +    virSocketAddr addr = { 0 };
>      *retsock = NULL;
>  
> -    memset(&addr, 0, sizeof(addr));
> -
>      addr.len = sizeof(addr.data);
>      if (getsockname(fd, &addr.data.sa, &addr.len) < 0) {
>          virReportSystemError(errno, "%s", _("Unable to get local socket name"));
> @@ -577,20 +569,16 @@ int virNetSocketNewConnectTCP(const char *nodename,
>                                virNetSocket **retsock)
>  {
>      struct addrinfo *ai = NULL;
> -    struct addrinfo hints;
> +    struct addrinfo hints = { 0 };
>      int fd = -1;
> -    virSocketAddr localAddr;
> -    virSocketAddr remoteAddr;
> +    virSocketAddr localAddr = { 0 };
> +    virSocketAddr remoteAddr = { 0 };
>      struct addrinfo *runp;
>      int savedErrno = ENOENT;
>      int e;
>  
>      *retsock = NULL;
>  
> -    memset(&localAddr, 0, sizeof(localAddr));
> -    memset(&remoteAddr, 0, sizeof(remoteAddr));
> -
> -    memset(&hints, 0, sizeof(hints));
>      hints.ai_family = family;
>      hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG | AI_V4MAPPED;
>      hints.ai_socktype = SOCK_STREAM;
> @@ -666,17 +654,14 @@ int virNetSocketNewConnectUNIX(const char *path,
>      VIR_AUTOCLOSE lockfd = -1;
>      int fd = -1;
>      int retries = 500;
> -    virSocketAddr localAddr;
> -    virSocketAddr remoteAddr;
> +    virSocketAddr localAddr = { 0 };
> +    virSocketAddr remoteAddr = { 0 };
>      g_autofree char *rundir = NULL;
>      int ret = -1;
>      bool daemonLaunched = false;
>  
>      VIR_DEBUG("path=%s spawnDaemonPath=%s", path, NULLSTR(spawnDaemonPath));
>  
> -    memset(&localAddr, 0, sizeof(localAddr));
> -    memset(&remoteAddr, 0, sizeof(remoteAddr));
> -
>      remoteAddr.len = sizeof(remoteAddr.data.un);
>  
>      if (spawnDaemonPath) {
> @@ -1168,8 +1153,8 @@ int virNetSocketNewConnectSockFD(int sockfd,
>  
>  virNetSocket *virNetSocketNewPostExecRestart(virJSONValue *object)
>  {
> -    virSocketAddr localAddr;
> -    virSocketAddr remoteAddr;
> +    virSocketAddr localAddr = { 0 };
> +    virSocketAddr remoteAddr = { 0 };
>      int fd, thepid, errfd;
>      bool isClient;
>      bool unlinkUNIX;
> @@ -1201,9 +1186,6 @@ virNetSocket *virNetSocketNewPostExecRestart(virJSONValue *object)
>      if (virJSONValueObjectGetBoolean(object, "unlinkUNIX", &unlinkUNIX) < 0)
>          unlinkUNIX = !isClient;
>  
> -    memset(&localAddr, 0, sizeof(localAddr));
> -    memset(&remoteAddr, 0, sizeof(remoteAddr));
> -
>      remoteAddr.len = sizeof(remoteAddr.data.stor);
>      if (getsockname(fd, &remoteAddr.data.sa, &remoteAddr.len) < 0) {
>          virReportSystemError(errno, "%s", _("Unable to get peer socket name"));
> @@ -2059,17 +2041,14 @@ int virNetSocketListen(virNetSocket *sock, int backlog)
>  int virNetSocketAccept(virNetSocket *sock, virNetSocket **clientsock)
>  {
>      int fd = -1;
> -    virSocketAddr localAddr;
> -    virSocketAddr remoteAddr;
> +    virSocketAddr localAddr = { 0 };
> +    virSocketAddr remoteAddr = { 0 };
>      int ret = -1;
>  
>      virObjectLock(sock);
>  
>      *clientsock = NULL;
>  
> -    memset(&localAddr, 0, sizeof(localAddr));
> -    memset(&remoteAddr, 0, sizeof(remoteAddr));
> -
>      remoteAddr.len = sizeof(remoteAddr.data.stor);
>      if ((fd = accept(sock->fd, &remoteAddr.data.sa, &remoteAddr.len)) < 0) {
>          if (errno == ECONNABORTED ||
> diff --git a/src/rpc/virnetsshsession.c b/src/rpc/virnetsshsession.c
> index 98be120a11..16d420467e 100644
> --- a/src/rpc/virnetsshsession.c
> +++ b/src/rpc/virnetsshsession.c
> @@ -559,7 +559,7 @@ static int
>  virNetSSHAuthenticatePrivkey(virNetSSHSession *sess,
>                               virNetSSHAuthMethod *priv)
>  {
> -    virConnectCredential retr_passphrase;
> +    virConnectCredential retr_passphrase = { 0 };
>      size_t i;
>      char *errmsg;
>      int ret;
> @@ -594,7 +594,6 @@ virNetSSHAuthenticatePrivkey(virNetSSHSession *sess,
>          return -1;
>      }
>  
> -    memset(&retr_passphrase, 0, sizeof(virConnectCredential));
>      retr_passphrase.type = -1;
>  
>      for (i = 0; i < sess->cred->ncredtype; i++) {
> diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c
> index 60dc68cf4b..9462ac6790 100644
> --- a/src/storage/storage_backend_logical.c
> +++ b/src/storage/storage_backend_logical.c
> @@ -186,11 +186,9 @@ virStorageBackendLogicalParseVolExtents(virStorageVolDef *vol,
>       */
>      for (i = 0; i < nextents; i++) {
>          g_autofree char *offset_str = NULL;
> -        virStorageVolSourceExtent extent;
> +        virStorageVolSourceExtent extent = { 0 };
>          size_t j = (i * 2) + 1;
>  
> -        memset(&extent, 0, sizeof(extent));
> -
>          offset_str = g_match_info_fetch(info, j + 1);
>  
>          if (virStrToLong_ull(offset_str, NULL, 10, &offset) < 0) {
> @@ -503,13 +501,12 @@ static char *
>  virStorageBackendLogicalFindPoolSources(const char *srcSpec G_GNUC_UNUSED,
>                                          unsigned int flags)
>  {
> -    virStoragePoolSourceList sourceList;
> +    virStoragePoolSourceList sourceList = { 0 };
>      size_t i;
>      char *retval = NULL;
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&sourceList, 0, sizeof(sourceList));
>      sourceList.type = VIR_STORAGE_POOL_LOGICAL;
>  
>      if (virStorageBackendLogicalGetPoolSources(&sourceList) < 0)
> @@ -549,13 +546,12 @@ static bool
>  virStorageBackendLogicalMatchPoolSource(virStoragePoolObj *pool)
>  {
>      virStoragePoolDef *def = virStoragePoolObjGetDef(pool);
> -    virStoragePoolSourceList sourceList;
> +    virStoragePoolSourceList sourceList = { 0 };
>      virStoragePoolSource *thisSource = NULL;
>      size_t i, j;
>      int matchcount = 0;
>      bool ret = false;
>  
> -    memset(&sourceList, 0, sizeof(sourceList));
>      sourceList.type = VIR_STORAGE_POOL_LOGICAL;
>  
>      if (virStorageBackendLogicalGetPoolSources(&sourceList) < 0)
> diff --git a/src/util/virarptable.c b/src/util/virarptable.c
> index 7f9fefc160..299dddd664 100644
> --- a/src/util/virarptable.c
> +++ b/src/util/virarptable.c
> @@ -111,13 +111,12 @@ virArpTableGet(void)
>  
>          if (tb[NDA_DST]) {
>              g_autofree char *ipstr = NULL;
> -            virSocketAddr virAddr;
> +            virSocketAddr virAddr = { 0 };
>  
>              VIR_REALLOC_N(table->t, num + 1);
>              table->n = num + 1;
>  
>              addr = RTA_DATA(tb[NDA_DST]);
> -            memset(&virAddr, 0, sizeof(virAddr));
>              virAddr.len = sizeof(virAddr.data.inet4);
>              virAddr.data.inet4.sin_family = AF_INET;
>              virAddr.data.inet4.sin_addr = *(struct in_addr *)addr;
> diff --git a/src/util/virauth.c b/src/util/virauth.c
> index bd676858ce..e7a5f7f010 100644
> --- a/src/util/virauth.c
> +++ b/src/util/virauth.c
> @@ -135,7 +135,7 @@ virAuthGetUsernamePath(const char *path,
>                         const char *hostname)
>  {
>      unsigned int ncred;
> -    virConnectCredential cred;
> +    virConnectCredential cred = { 0 };
>      g_autofree char *prompt = NULL;
>      char *ret = NULL;
>  
> @@ -150,8 +150,6 @@ virAuthGetUsernamePath(const char *path,
>          return NULL;
>      }
>  
> -    memset(&cred, 0, sizeof(virConnectCredential));
> -
>      if (defaultUsername != NULL) {
>          prompt = g_strdup_printf(_("Enter username for %1$s [%2$s]"), hostname,
>                                   defaultUsername);
> diff --git a/src/util/virbpf.c b/src/util/virbpf.c
> index 34abf6f9b4..78fa102b4d 100644
> --- a/src/util/virbpf.c
> +++ b/src/util/virbpf.c
> @@ -35,9 +35,7 @@ virBPFCreateMap(unsigned int mapType,
>                  unsigned int valSize,
>                  unsigned int maxEntries)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.map_type = mapType;
>      attr.key_size = keySize;
> @@ -57,12 +55,10 @@ virBPFLoadProg(struct bpf_insn *insns,
>  {
>      g_autofree char *logbuf = NULL;
>      int progfd = -1;
> -    union bpf_attr attr;
> +    union bpf_attr attr = { 0 };
>  
>      logbuf = g_new0(char, LOG_BUF_SIZE);
>  
> -    memset(&attr, 0, sizeof(attr));
> -
>      attr.prog_type = progType;
>      attr.insn_cnt = insnCnt;
>      attr.insns = (uintptr_t)insns;
> @@ -85,9 +81,7 @@ virBPFAttachProg(int progfd,
>                   int targetfd,
>                   int attachType)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.target_fd = targetfd;
>      attr.attach_bpf_fd = progfd;
> @@ -102,9 +96,7 @@ virBPFDetachProg(int progfd,
>                   int targetfd,
>                   int attachType)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.target_fd = targetfd;
>      attr.attach_bpf_fd = progfd;
> @@ -121,11 +113,9 @@ virBPFQueryProg(int targetfd,
>                  unsigned int *progcnt,
>                  void *progids)
>  {
> -    union bpf_attr attr;
> +    union bpf_attr attr = { 0 };
>      int rc;
>  
> -    memset(&attr, 0, sizeof(attr));
> -
>      attr.query.target_fd = targetfd;
>      attr.query.attach_type = attachType;
>      attr.query.prog_cnt = maxprogids;
> @@ -143,9 +133,7 @@ virBPFQueryProg(int targetfd,
>  int
>  virBPFGetProg(unsigned int id)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.prog_id = id;
>  
> @@ -158,11 +146,9 @@ virBPFGetProgInfo(int progfd,
>                    struct bpf_prog_info *info,
>                    unsigned int **mapIDs)
>  {
> -    union bpf_attr attr;
> +    union bpf_attr attr = { 0 };
>      int rc;
>  
> -    memset(&attr, 0, sizeof(attr));
> -
>      attr.info.bpf_fd = progfd;
>      attr.info.info_len = sizeof(struct bpf_prog_info);
>      attr.info.info = (uintptr_t)info;
> @@ -200,9 +186,7 @@ virBPFGetProgInfo(int progfd,
>  int
>  virBPFGetMap(unsigned int id)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.map_id = id;
>  
> @@ -214,9 +198,7 @@ int
>  virBPFGetMapInfo(int mapfd,
>                   struct bpf_map_info *info)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.info.bpf_fd = mapfd;
>      attr.info.info_len = sizeof(struct bpf_map_info);
> @@ -231,9 +213,7 @@ virBPFLookupElem(int mapfd,
>                   void *key,
>                   void *val)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.map_fd = mapfd;
>      attr.key = (uintptr_t)key;
> @@ -248,9 +228,7 @@ virBPFGetNextElem(int mapfd,
>                    void *key,
>                    void *nextKey)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.map_fd = mapfd;
>      attr.key = (uintptr_t)key;
> @@ -265,9 +243,7 @@ virBPFUpdateElem(int mapfd,
>                   void *key,
>                   void *val)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.map_fd = mapfd;
>      attr.key = (uintptr_t)key;
> @@ -281,9 +257,7 @@ int
>  virBPFDeleteElem(int mapfd,
>                   void *key)
>  {
> -    union bpf_attr attr;
> -
> -    memset(&attr, 0, sizeof(attr));
> +    union bpf_attr attr = { 0 };
>  
>      attr.map_fd = mapfd;
>      attr.key = (uintptr_t)key;
> diff --git a/src/util/virdevmapper.c b/src/util/virdevmapper.c
> index 33cf3e202b..70ce0f0c23 100644
> --- a/src/util/virdevmapper.c
> +++ b/src/util/virdevmapper.c
> @@ -128,12 +128,10 @@ static int
>  virDMOpen(void)
>  {
>      VIR_AUTOCLOSE controlFD = -1;
> -    struct dm_ioctl dm;
> +    struct dm_ioctl dm = { 0 };
>      g_autofree char *tmp = NULL;
>      int ret;
>  
> -    memset(&dm, 0, sizeof(dm));
> -
>      if ((controlFD = open(CONTROL_PATH, O_RDWR)) < 0) {
>          /* We can't talk to devmapper. Produce a warning and let
>           * the caller decide what to do next. */
> @@ -223,12 +221,10 @@ virDevMapperGetTargetsImpl(int controlFD,
>  {
>      g_autofree char *sanitizedPath = NULL;
>      g_autofree char *buf = NULL;
> -    struct dm_ioctl dm;
> +    struct dm_ioctl dm = { 0 };
>      struct dm_target_deps *deps = NULL;
>      size_t i;
>  
> -    memset(&dm, 0, sizeof(dm));
> -
>      if (ttl == 0) {
>          errno = ELOOP;
>          return -1;
> diff --git a/src/util/virfdstream.c b/src/util/virfdstream.c
> index 0e39889ac9..26a1f00316 100644
> --- a/src/util/virfdstream.c
> +++ b/src/util/virfdstream.c
> @@ -1192,7 +1192,7 @@ int virFDStreamConnectUNIX(virStreamPtr st,
>                             const char *path,
>                             bool abstract)
>  {
> -    struct sockaddr_un sa;
> +    struct sockaddr_un sa = { 0 };
>      virTimeBackOffVar timeout;
>      VIR_AUTOCLOSE fd = -1;
>      int ret;
> @@ -1203,7 +1203,6 @@ int virFDStreamConnectUNIX(virStreamPtr st,
>          return -1;
>      }
>  
> -    memset(&sa, 0, sizeof(sa));
>      sa.sun_family = AF_UNIX;
>      if (abstract) {
>          if (virStrcpy(sa.sun_path+1, path, sizeof(sa.sun_path)-1) < 0)
> diff --git a/src/util/virfile.c b/src/util/virfile.c
> index 2984e2ead2..fe456596ae 100644
> --- a/src/util/virfile.c
> +++ b/src/util/virfile.c
> @@ -876,14 +876,13 @@ int virFileLoopDeviceAssociate(const char *file,
>  {
>      int lofd = -1;
>      int fsfd = -1;
> -    struct loop_info64 lo;
> +    struct loop_info64 lo = { 0 };
>      g_autofree char *loname = NULL;
>      int ret = -1;
>  
>      if ((lofd = virFileLoopDeviceOpen(&loname)) < 0)
>          return -1;
>  
> -    memset(&lo, 0, sizeof(lo));
>      lo.lo_flags = LO_FLAGS_AUTOCLEAR;
>  
>      /* Set backing file name for LOOP_GET_STATUS64 queries */
> diff --git a/src/util/virinitctl.c b/src/util/virinitctl.c
> index 430f23a235..d26249a3e9 100644
> --- a/src/util/virinitctl.c
> +++ b/src/util/virinitctl.c
> @@ -124,14 +124,12 @@ int
>  virInitctlSetRunLevel(const char *fifo,
>                        virInitctlRunLevel level)
>  {
> -    struct virInitctlRequest req;
> +    struct virInitctlRequest req = { 0 };
>      int fd = -1;
>      int ret = -1;
>      const int open_flags = O_WRONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY;
>      size_t i = 0;
>  
> -    memset(&req, 0, sizeof(req));
> -
>      req.magic = VIR_INITCTL_MAGIC;
>      req.sleeptime = 0;
>      req.cmd = VIR_INITCTL_CMD_RUNLVL;
> diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c
> index 4790bd4b55..a70c87cbdb 100644
> --- a/src/util/viriscsi.c
> +++ b/src/util/viriscsi.c
> @@ -394,7 +394,7 @@ virISCSIScanTargetsInternal(const char *portal,
>          "^\\s*(\\S+)\\s+(\\S+)\\s*$"
>      };
>      int vars[] = { 2 };
> -    struct virISCSITargetList list;
> +    struct virISCSITargetList list = { 0 };
>      size_t i;
>      g_autoptr(virCommand) cmd = virCommandNewArgList(ISCSIADM,
>                                                         "--mode", "discovery",
> @@ -414,8 +414,6 @@ virISCSIScanTargetsInternal(const char *portal,
>                               NULL);
>      }
>  
> -    memset(&list, 0, sizeof(list));
> -
>      if (virCommandRunRegex(cmd,
>                             1,
>                             regexes,
> diff --git a/src/util/virlog.c b/src/util/virlog.c
> index 6bbd69fe43..2d262d94f0 100644
> --- a/src/util/virlog.c
> +++ b/src/util/virlog.c
> @@ -897,12 +897,12 @@ virLogOutputToJournald(virLogSource *source,
>  {
>      int buffd = -1;
>      int journalfd = (intptr_t) data;
> -    struct msghdr mh;
> -    struct sockaddr_un sa;
> +    struct msghdr mh = { 0 };
> +    struct sockaddr_un sa = { 0 };
>      union {
>          struct cmsghdr cmsghdr;
>          uint8_t buf[CMSG_SPACE(sizeof(int))];
> -    } control;
> +    } control = { 0 };
>      struct cmsghdr *cmsg;
>      /* We use /dev/shm instead of /tmp here, since we want this to
>       * be a tmpfs, and one that is available from early boot on
> @@ -950,12 +950,10 @@ virLogOutputToJournald(virLogSource *source,
>          }
>      }
>  
> -    memset(&sa, 0, sizeof(sa));
>      sa.sun_family = AF_UNIX;
>      if (virStrcpyStatic(sa.sun_path, "/run/systemd/journal/socket") < 0)
>          return;
>  
> -    memset(&mh, 0, sizeof(mh));
>      mh.msg_name = &sa;
>      mh.msg_namelen = offsetof(struct sockaddr_un, sun_path) + strlen(sa.sun_path);
>      mh.msg_iov = iov;
> @@ -983,7 +981,6 @@ virLogOutputToJournald(virLogSource *source,
>      mh.msg_iov = NULL;
>      mh.msg_iovlen = 0;
>  
> -    memset(&control, 0, sizeof(control));
>      mh.msg_control = &control;
>      mh.msg_controllen = sizeof(control);
>  
> diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
> index 38a4f480eb..46d90fbd76 100644
> --- a/src/util/virnetdev.c
> +++ b/src/util/virnetdev.c
> @@ -812,9 +812,7 @@ virNetDevGetRcvAllMulti(const char *ifname,
>  #if defined(WITH_IF_INDEXTONAME)
>  char *virNetDevGetName(int ifindex)
>  {
> -    char name[IFNAMSIZ];
> -
> -    memset(&name, 0, sizeof(name));
> +    char name[IFNAMSIZ] = { 0 };
>  
>      if (!if_indextoname(ifindex, name)) {
>          virReportSystemError(errno,
> @@ -847,7 +845,7 @@ char *virNetDevGetName(int ifindex)
>  #if defined(SIOCGIFINDEX) && defined(WITH_STRUCT_IFREQ)
>  int virNetDevGetIndex(const char *ifname, int *ifindex)
>  {
> -    struct ifreq ifreq;
> +    struct ifreq ifreq = { 0 };
>      VIR_AUTOCLOSE fd = socket(VIR_NETDEV_FAMILY, SOCK_DGRAM, 0);
>  
>      if (fd < 0) {
> @@ -856,8 +854,6 @@ int virNetDevGetIndex(const char *ifname, int *ifindex)
>          return -1;
>      }
>  
> -    memset(&ifreq, 0, sizeof(ifreq));
> -
>      if (virStrcpyStatic(ifreq.ifr_name, ifname) < 0) {
>          virReportSystemError(ERANGE,
>                               _("invalid interface name %1$s"),
> diff --git a/src/util/virnetdevbridge.c b/src/util/virnetdevbridge.c
> index b870e26e5f..5fd88f3195 100644
> --- a/src/util/virnetdevbridge.c
> +++ b/src/util/virnetdevbridge.c
> @@ -57,11 +57,9 @@ static int virNetDevBridgeCmd(const char *brname,
>                                void *arg,
>                                size_t argsize)
>  {
> -    struct ifdrv ifd;
> +    struct ifdrv ifd = { 0 };
>      VIR_AUTOCLOSE s = -1;
>  
> -    memset(&ifd, 0, sizeof(ifd));
> -
>      if ((s = socket(AF_LOCAL, SOCK_DGRAM, 0)) < 0) {
>          virReportSystemError(errno, "%s",
>                               _("Cannot open network interface control socket"));
> @@ -621,9 +619,8 @@ int virNetDevBridgeAddPort(const char *brname,
>  int virNetDevBridgeAddPort(const char *brname,
>                             const char *ifname)
>  {
> -    struct ifbreq req;
> +    struct ifbreq req = { 0 };
>  
> -    memset(&req, 0, sizeof(req));
>      if (virStrcpyStatic(req.ifbr_ifsname, ifname) < 0) {
>          virReportSystemError(ERANGE,
>                               _("Network interface name '%1$s' is too long"),
> @@ -687,9 +684,8 @@ int virNetDevBridgeRemovePort(const char *brname,
>  int virNetDevBridgeRemovePort(const char *brname,
>                                const char *ifname)
>  {
> -    struct ifbreq req;
> +    struct ifbreq req = { 0 };
>  
> -    memset(&req, 0, sizeof(req));
>      if (virStrcpyStatic(req.ifbr_ifsname, ifname) < 0) {
>          virReportSystemError(ERANGE,
>                               _("Network interface name '%1$s' is too long"),
> diff --git a/src/util/virnetdevip.c b/src/util/virnetdevip.c
> index d1e717641c..3b02fe0cec 100644
> --- a/src/util/virnetdevip.c
> +++ b/src/util/virnetdevip.c
> @@ -84,7 +84,7 @@ virNetDevCreateNetlinkAddressMessage(int messageType,
>                                       virSocketAddr *peer)
>  {
>      struct nl_msg *nlmsg = NULL;
> -    struct ifaddrmsg ifa;
> +    struct ifaddrmsg ifa = { 0 };
>      unsigned int ifindex;
>      void *addrData = NULL;
>      void *peerData = NULL;
> @@ -110,8 +110,6 @@ virNetDevCreateNetlinkAddressMessage(int messageType,
>      nlmsg = virNetlinkMsgNew(messageType,
>                               NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL);
>  
> -    memset(&ifa, 0, sizeof(ifa));
> -
>      ifa.ifa_prefixlen = prefix;
>      ifa.ifa_family = VIR_SOCKET_ADDR_FAMILY(addr);
>      ifa.ifa_index = ifindex;
> @@ -277,7 +275,7 @@ virNetDevIPRouteAdd(const char *ifname,
>  {
>      unsigned int recvbuflen;
>      unsigned int ifindex;
> -    struct rtmsg rtmsg;
> +    struct rtmsg rtmsg = { 0 };
>      void *gatewayData = NULL;
>      void *addrData = NULL;
>      size_t addrDataLen;
> @@ -323,8 +321,6 @@ virNetDevIPRouteAdd(const char *ifname,
>      nlmsg = virNetlinkMsgNew(RTM_NEWROUTE,
>                               NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL);
>  
> -    memset(&rtmsg, 0, sizeof(rtmsg));
> -
>      rtmsg.rtm_family = VIR_SOCKET_ADDR_FAMILY(gateway);
>      rtmsg.rtm_table = RT_TABLE_MAIN;
>      rtmsg.rtm_scope = RT_SCOPE_UNIVERSE;
> diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c
> index 3e25f18770..3bfd36fc23 100644
> --- a/src/util/virnetdevtap.c
> +++ b/src/util/virnetdevtap.c
> @@ -270,7 +270,7 @@ int virNetDevTapCreate(char **ifname,
>  int virNetDevTapDelete(const char *ifname,
>                         const char *tunpath)
>  {
> -    struct ifreq try;
> +    struct ifreq try = { 0 };
>      int fd;
>      int ret = -1;
>  
> @@ -284,7 +284,6 @@ int virNetDevTapDelete(const char *ifname,
>          return -1;
>      }
>  
> -    memset(&try, 0, sizeof(struct ifreq));
>      try.ifr_flags = IFF_TAP|IFF_NO_PI;
>  
>      if (virStrcpyStatic(try.ifr_name, ifname) < 0) {
> diff --git a/src/util/virperf.c b/src/util/virperf.c
> index 03341e73e3..91f2ca632a 100644
> --- a/src/util/virperf.c
> +++ b/src/util/virperf.c
> @@ -203,7 +203,7 @@ virPerfEventEnable(virPerf *perf,
>                     virPerfEventType type,
>                     pid_t pid)
>  {
> -    struct perf_event_attr attr;
> +    struct perf_event_attr attr = { 0 };
>      struct virPerfEvent *event = &(perf->events[type]);
>      struct virPerfEventAttr *event_attr = &attrs[type];
>  
> @@ -233,7 +233,6 @@ virPerfEventEnable(virPerf *perf,
>          }
>      }
>  
> -    memset(&attr, 0, sizeof(attr));
>      attr.size = sizeof(attr);
>      attr.inherit = 1;
>      attr.disabled = 1;
> diff --git a/src/util/virprocess.c b/src/util/virprocess.c
> index a26683f333..f8daa786c9 100644
> --- a/src/util/virprocess.c
> +++ b/src/util/virprocess.c
> @@ -1539,13 +1539,12 @@ virProcessExitWithStatus(int status)
>      if (WIFEXITED(status)) {
>          value = WEXITSTATUS(status);
>      } else if (WIFSIGNALED(status)) {
> -        struct sigaction act;
> +        struct sigaction act = { 0 };
>          sigset_t sigs;
>  
>          if (sigemptyset(&sigs) == 0 &&
>              sigaddset(&sigs, WTERMSIG(status)) == 0)
>              sigprocmask(SIG_UNBLOCK, &sigs, NULL);
> -        memset(&act, 0, sizeof(act));
>          act.sa_handler = SIG_DFL;
>          sigfillset(&act.sa_mask);
>          sigaction(WTERMSIG(status), &act, NULL);
> diff --git a/src/util/virsocket.c b/src/util/virsocket.c
> index a6f185114d..cd6f7ecd1b 100644
> --- a/src/util/virsocket.c
> +++ b/src/util/virsocket.c
> @@ -389,12 +389,11 @@ virSocketSendFD(int sock, int fd)
>  {
>      char byte = 0;
>      struct iovec iov;
> -    struct msghdr msg;
> +    struct msghdr msg = { 0 };
>      struct cmsghdr *cmsg;
>      char buf[CMSG_SPACE(sizeof(fd))];
>  
>      /* send at least one char */
> -    memset(&msg, 0, sizeof(msg));
>      iov.iov_base = &byte;
>      iov.iov_len = 1;
>      msg.msg_iov = &iov;
> @@ -428,7 +427,7 @@ virSocketRecvFD(int sock, int fdflags)
>  {
>      char byte = 0;
>      struct iovec iov;
> -    struct msghdr msg;
> +    struct msghdr msg = { 0 };
>      int fd = -1;
>      ssize_t len;
>      struct cmsghdr *cmsg;
> @@ -441,7 +440,6 @@ virSocketRecvFD(int sock, int fdflags)
>      }
>  
>      /* send at least one char */
> -    memset(&msg, 0, sizeof(msg));
>      iov.iov_base = &byte;
>      iov.iov_len = 1;
>      msg.msg_iov = &iov;
> diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c
> index 43511bdd69..fbda858cfe 100644
> --- a/src/util/virsocketaddr.c
> +++ b/src/util/virsocketaddr.c
> @@ -92,7 +92,7 @@ virSocketAddrParseInternal(struct addrinfo **res,
>                             int ai_flags,
>                             bool reportError)
>  {
> -    struct addrinfo hints;
> +    struct addrinfo hints = { 0 };
>      int err;
>  
>      if (val == NULL) {
> @@ -101,7 +101,6 @@ virSocketAddrParseInternal(struct addrinfo **res,
>          return -1;
>      }
>  
> -    memset(&hints, 0, sizeof(hints));
>      hints.ai_family = family;
>      hints.ai_flags = ai_flags;
>      if ((err = getaddrinfo(val, NULL, &hints, res)) != 0) {
> @@ -240,12 +239,10 @@ virSocketAddrParseIPv6(virSocketAddr *addr, const char *val)
>  int virSocketAddrResolveService(const char *service)
>  {
>      struct addrinfo *res, *tmp;
> -    struct addrinfo hints;
> +    struct addrinfo hints = { 0 };
>      int err;
>      int port = -1;
>  
> -    memset(&hints, 0, sizeof(hints));
> -
>      if ((err = getaddrinfo(NULL, service, &hints, &res)) != 0) {
>          virReportError(VIR_ERR_SYSTEM_ERROR,
>                         _("Cannot parse socket service '%1$s': %2$s"),
> diff --git a/src/util/viruri.c b/src/util/viruri.c
> index a824a983df..64995da342 100644
> --- a/src/util/viruri.c
> +++ b/src/util/viruri.c
> @@ -201,12 +201,10 @@ virURIParse(const char *uri)
>  char *
>  virURIFormat(virURI *uri)
>  {
> -    xmlURI xmluri;
> +    xmlURI xmluri = { 0 };
>      g_autofree char *tmpserver = NULL;
>      char *ret;
>  
> -    memset(&xmluri, 0, sizeof(xmluri));
> -
>      xmluri.scheme = uri->scheme;
>      xmluri.server = uri->server;
>      xmluri.port = uri->port;
> diff --git a/src/vbox/vbox_storage.c b/src/vbox/vbox_storage.c
> index 41b19a9c62..2285beea79 100644
> --- a/src/vbox/vbox_storage.c
> +++ b/src/vbox/vbox_storage.c
> @@ -396,7 +396,7 @@ vboxStorageVolCreateXML(virStoragePoolPtr pool,
>      struct _vboxDriver *data = pool->conn->privateData;
>      PRUnichar *hddFormatUtf16 = NULL;
>      PRUnichar *hddNameUtf16 = NULL;
> -    virStoragePoolDef poolDef;
> +    virStoragePoolDef poolDef = { 0 };
>      nsresult rc;
>      vboxIID hddIID;
>      unsigned char uuid[VIR_UUID_BUFLEN];
> @@ -424,7 +424,6 @@ vboxStorageVolCreateXML(virStoragePoolPtr pool,
>       * so just assign it for now, change the behaviour
>       * when vbox supports pools.
>       */
> -    memset(&poolDef, 0, sizeof(poolDef));
>      poolDef.type = VIR_STORAGE_POOL_DIR;
>  
>      if ((def = virStorageVolDefParse(&poolDef, xml, NULL, parseFlags)) == NULL)
> @@ -720,8 +719,8 @@ static char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
>      char *hddFormatUtf8 = NULL;
>      PRUint64 hddLogicalSize = 0;
>      PRUint64 hddActualSize = 0;
> -    virStoragePoolDef pool;
> -    virStorageVolDef def;
> +    virStoragePoolDef pool = { 0 };
> +    virStorageVolDef def = { 0 };
>      vboxIID hddIID;
>      PRUint32 hddstate;
>      nsresult rc;
> @@ -732,9 +731,6 @@ static char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
>  
>      virCheckFlags(0, NULL);
>  
> -    memset(&pool, 0, sizeof(pool));
> -    memset(&def, 0, sizeof(def));
> -
>      if (virUUIDParse(vol->key, uuid) < 0) {
>          virReportError(VIR_ERR_INVALID_ARG,
>                         _("Could not parse UUID from '%1$s'"), vol->key);
> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
> index 5e0f1b6b3e..fe4f253e9e 100644
> --- a/src/vmx/vmx.c
> +++ b/src/vmx/vmx.c
> @@ -1044,11 +1044,9 @@ virVMXVerifyDiskAddress(virDomainXMLOption *xmlopt,
>                          virDomainDiskDef *disk,
>                          virDomainDef *vmdef)
>  {
> -    virDomainDiskDef def;
> +    virDomainDiskDef def = { 0 };
>      virDomainDeviceDriveAddress *drive;
>  
> -    memset(&def, 0, sizeof(def));
> -
>      if (disk->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) {
>          virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>                         _("Unsupported disk address type '%1$s'"),
> diff --git a/tests/nsstest.c b/tests/nsstest.c
> index 615b063118..4b7895db7e 100644
> --- a/tests/nsstest.c
> +++ b/tests/nsstest.c
> @@ -39,14 +39,12 @@ testGetHostByName(const void *opaque)
>  {
>      const struct testNSSData *data = opaque;
>      const bool existent = data->hostname && data->ipAddr && data->ipAddr[0];
> -    struct hostent resolved;
> +    struct hostent resolved = { 0 };
>      char buf[BUF_SIZE] = { 0 };
>      char **addrList;
>      int rv, tmp_errno = 0, tmp_herrno = 0;
>      size_t i = 0;
>  
> -    memset(&resolved, 0, sizeof(resolved));
> -
>      rv = NSS_NAME(gethostbyname2)(data->hostname,
>                                    data->af,
>                                    &resolved,
> @@ -116,12 +114,10 @@ testGetHostByName(const void *opaque)
>      addrList = resolved.h_addr_list;
>      i = 0;
>      while (*addrList) {
> -        virSocketAddr sa;
> +        virSocketAddr sa = { 0 };
>          g_autofree char *ipAddr = NULL;
>          void *address = *addrList;
>  
> -        memset(&sa, 0, sizeof(sa));
> -
>          if (resolved.h_addrtype == AF_INET) {
>              virSocketAddrSetIPv4AddrNetOrder(&sa, *((uint32_t *) address));
>          } else {
> diff --git a/tests/nwfilterxml2firewalltest.c b/tests/nwfilterxml2firewalltest.c
> index bd112cef83..b78b1b7947 100644
> --- a/tests/nwfilterxml2firewalltest.c
> +++ b/tests/nwfilterxml2firewalltest.c
> @@ -348,12 +348,10 @@ static int testCompareXMLToArgvFiles(const char *xml,
>      g_autofree char *actualargv = NULL;
>      g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
>      g_autoptr(GHashTable) vars = virHashNew(virNWFilterVarValueHashFree);
> -    virNWFilterInst inst;
> +    virNWFilterInst inst = { 0 };
>      int ret = -1;
>      g_autoptr(virCommandDryRunToken) dryRunToken = virCommandDryRunTokenNew();
>  
> -    memset(&inst, 0, sizeof(inst));
> -
>      virCommandSetDryRun(dryRunToken, &buf, true, true, NULL, NULL);
>  
>      if (testSetDefaultParameters(vars) < 0)
> diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
> index 4672b0a8ff..a1740d3f45 100644
> --- a/tests/qemumonitorjsontest.c
> +++ b/tests/qemumonitorjsontest.c
> @@ -895,7 +895,7 @@ testQemuMonitorJSONGetObjectProperty(const void *opaque)
>  {
>      const testGenericData *data = opaque;
>      virDomainXMLOption *xmlopt = data->xmlopt;
> -    qemuMonitorJSONObjectProperty prop;
> +    qemuMonitorJSONObjectProperty prop = { 0 };
>      g_autoptr(qemuMonitorTest) test = NULL;
>  
>      if (!(test = qemuMonitorTestNewSchema(xmlopt, data->schema)))
> @@ -906,7 +906,6 @@ testQemuMonitorJSONGetObjectProperty(const void *opaque)
>          return -1;
>  
>      /* Present with path and property */
> -    memset(&prop, 0, sizeof(qemuMonitorJSONObjectProperty));
>      prop.type = QEMU_MONITOR_OBJECT_PROPERTY_BOOLEAN;
>      if (qemuMonitorJSONGetObjectProperty(qemuMonitorTestGetMonitor(test),
>                                           "/machine/i440fx",
> @@ -935,7 +934,7 @@ testQemuMonitorJSONSetObjectProperty(const void *opaque)
>  {
>      const testGenericData *data = opaque;
>      virDomainXMLOption *xmlopt = data->xmlopt;
> -    qemuMonitorJSONObjectProperty prop;
> +    qemuMonitorJSONObjectProperty prop = { 0 };
>      g_autoptr(qemuMonitorTest) test = NULL;
>  
>      if (!(test = qemuMonitorTestNewSchema(xmlopt, data->schema)))
> @@ -949,7 +948,6 @@ testQemuMonitorJSONSetObjectProperty(const void *opaque)
>          return -1;
>  
>      /* Let's attempt the setting */
> -    memset(&prop, 0, sizeof(qemuMonitorJSONObjectProperty));
>      prop.type = QEMU_MONITOR_OBJECT_PROPERTY_BOOLEAN;
>      prop.val.b = true;
>      if (qemuMonitorJSONSetObjectProperty(qemuMonitorTestGetMonitor(test),
> diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c
> index 8b8b02a790..16a4096c98 100644
> --- a/tests/qemumonitortestutils.c
> +++ b/tests/qemumonitortestutils.c
> @@ -874,9 +874,7 @@ qemuMonitorTestNew(virDomainXMLOption *xmlopt,
>                     GHashTable *schema)
>  {
>      g_autoptr(qemuMonitorTest) test = NULL;
> -    virDomainChrSourceDef src;
> -
> -    memset(&src, 0, sizeof(src));
> +    virDomainChrSourceDef src = { 0 };
>  
>      if (!(test = qemuMonitorCommonTestNew(xmlopt, vm, &src)))
>          goto error;
> @@ -1185,9 +1183,7 @@ qemuMonitorTest *
>  qemuMonitorTestNewAgent(virDomainXMLOption *xmlopt)
>  {
>      g_autoptr(qemuMonitorTest) test = NULL;
> -    virDomainChrSourceDef src;
> -
> -    memset(&src, 0, sizeof(src));
> +    virDomainChrSourceDef src = { 0 };
>  
>      if (!(test = qemuMonitorCommonTestNew(xmlopt, NULL, &src)))
>          goto error;
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index 534eb9e699..c44b9bc494 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -546,7 +546,7 @@ testCompareXMLToArgv(const void *data)
>      unsigned int parseFlags = info->parseFlags;
>      int ret = -1;
>      virDomainObj *vm = NULL;
> -    virDomainChrSourceDef monitor_chr;
> +    virDomainChrSourceDef monitor_chr = { 0 };
>      g_autoptr(virConnect) conn = NULL;
>      virError *err = NULL;
>      g_autofree char *log = NULL;
> @@ -558,8 +558,6 @@ testCompareXMLToArgv(const void *data)
>      virArch arch = VIR_ARCH_NONE;
>      g_autoptr(virIdentity) sysident = virIdentityGetSystem();
>  
> -    memset(&monitor_chr, 0, sizeof(monitor_chr));
> -
>      if (testQemuInfoInitArgs((struct testQemuInfo *) info) < 0)
>          goto cleanup;
>  
> diff --git a/tests/virhostcputest.c b/tests/virhostcputest.c
> index 196f4c29b9..0990013878 100644
> --- a/tests/virhostcputest.c
> +++ b/tests/virhostcputest.c
> @@ -30,7 +30,7 @@ linuxTestCompareFiles(const char *cpuinfofile,
>                        const char *outputfile)
>  {
>      g_autofree char *actualData = NULL;
> -    virNodeInfo nodeinfo;
> +    virNodeInfo nodeinfo = { 0 };
>      g_autoptr(FILE) cpuinfo = NULL;
>  
>      cpuinfo = fopen(cpuinfofile, "r");
> @@ -40,7 +40,6 @@ linuxTestCompareFiles(const char *cpuinfofile,
>          return -1;
>      }
>  
> -    memset(&nodeinfo, 0, sizeof(nodeinfo));
>      if (virHostCPUGetInfoPopulateLinux(cpuinfo, arch,
>                                         &nodeinfo.cpus, &nodeinfo.mhz,
>                                         &nodeinfo.nodes, &nodeinfo.sockets,
> diff --git a/tests/virnetmessagetest.c b/tests/virnetmessagetest.c
> index 14790c0ece..e426bc7791 100644
> --- a/tests/virnetmessagetest.c
> +++ b/tests/virnetmessagetest.c
> @@ -179,7 +179,7 @@ static int testMessageHeaderDecode(const void *args G_GNUC_UNUSED)
>  
>  static int testMessagePayloadEncode(const void *args G_GNUC_UNUSED)
>  {
> -    virNetMessageError err;
> +    virNetMessageError err = { 0 };
>      virNetMessage *msg = virNetMessageNew(true);
>      int ret = -1;
>      static const char expect[] = {
> @@ -218,8 +218,6 @@ static int testMessagePayloadEncode(const void *args G_GNUC_UNUSED)
>      if (!msg)
>          return -1;
>  
> -    memset(&err, 0, sizeof(err));
> -
>      err.code = VIR_ERR_INTERNAL_ERROR;
>      err.domain = VIR_FROM_RPC;
>      err.level = VIR_ERR_ERROR;
> @@ -287,7 +285,7 @@ static int testMessagePayloadEncode(const void *args G_GNUC_UNUSED)
>  
>  static int testMessagePayloadDecode(const void *args G_GNUC_UNUSED)
>  {
> -    virNetMessageError err;
> +    virNetMessageError err = { 0 };
>      virNetMessage *msg = virNetMessageNew(true);
>      static char input_buffer[] = {
>          0x00, 0x00, 0x00, 0x74,  /* Length */
> @@ -323,8 +321,6 @@ static int testMessagePayloadDecode(const void *args G_GNUC_UNUSED)
>      };
>      int ret = -1;
>  
> -    memset(&err, 0, sizeof(err));
> -
>      if (!msg)
>          return -1;
>  
> diff --git a/tools/nss/libvirt_nss.c b/tools/nss/libvirt_nss.c
> index ec7763224b..ec14ac804b 100644
> --- a/tools/nss/libvirt_nss.c
> +++ b/tools/nss/libvirt_nss.c
> @@ -484,13 +484,12 @@ aiforaf(const char *name, int af, struct addrinfo *pai, struct addrinfo **aip)
>              struct sockaddr sa;
>              struct sockaddr_in sin;
>              struct sockaddr_in6 sin6;
> -        } sa;
> +        } sa = { 0 };
>          socklen_t salen;
>          void *address = *addrList;
>          char host[NI_MAXHOST];
>          char port[NI_MAXSERV];
>  
> -        memset(&sa, 0, sizeof(sa));
>          if (resolved.h_addrtype == AF_INET) {
>              sa.sin.sin_family = AF_INET;
>              memcpy(&sa.sin.sin_addr.s_addr,
> diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
> index c74fc19347..89fdc7a050 100644
> --- a/tools/virsh-domain-monitor.c
> +++ b/tools/virsh-domain-monitor.c
> @@ -1210,7 +1210,7 @@ cmdDominfo(vshControl *ctl, const vshCmd *cmd)
>  {
>      virDomainInfo info;
>      g_autoptr(virshDomain) dom = NULL;
> -    virSecurityModel secmodel;
> +    virSecurityModel secmodel = { 0 };
>      int persistent = 0;
>      bool ret = true;
>      int autostart;
> @@ -1288,7 +1288,6 @@ cmdDominfo(vshControl *ctl, const vshCmd *cmd)
>                   has_managed_save ? _("yes") : _("no"));
>  
>      /* Security model and label information */
> -    memset(&secmodel, 0, sizeof(secmodel));
>      if (virNodeGetSecurityModel(priv->conn, &secmodel) == -1) {
>          if (last_error->code != VIR_ERR_NO_SUPPORT) {
>              return false;
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index fb54562eb6..7d76055eda 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -6182,7 +6182,7 @@ virshDomainJobStatsToDomainJobInfo(virTypedParameterPtr params,
>  static bool
>  cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>  {
> -    virDomainJobInfo info;
> +    virDomainJobInfo info = { 0 };
>      g_autoptr(virshDomain) dom = NULL;
>      bool ret = false;
>      const char *unit;
> @@ -6209,8 +6209,6 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>      if (vshCommandOptBool(cmd, "keep-completed"))
>          flags |= VIR_DOMAIN_JOB_STATS_KEEP_COMPLETED;
>  
> -    memset(&info, 0, sizeof(info));
> -
>      rc = virDomainGetJobStats(dom, &info.type, &params, &nparams, flags);
>      if (rc == 0) {
>          if (virshDomainJobStatsToDomainJobInfo(params, nparams, &info) < 0)
> diff --git a/tools/vsh-table.c b/tools/vsh-table.c
> index 005cc564dd..da7dc84ee8 100644
> --- a/tools/vsh-table.c
> +++ b/tools/vsh-table.c
> @@ -204,9 +204,7 @@ vshTableSafeEncode(const char *s, size_t *width)
>      size_t sz = s ? strlen(s) : 0;
>      char *buf;
>      char *ret;
> -    mbstate_t st;
> -
> -    memset(&st, 0, sizeof(st));
> +    mbstate_t st = { 0 };
>  
>      buf = g_new0(char, (sz * HEX_ENCODE_LENGTH) + 1);
>  



More information about the libvir-list mailing list