changeset 21389:59437f8764c6

global: Replaced all instances of memset(p, 0, sizeof(*p)) with the new i_zero() macro. Used the following script: C_FILES=`git ls-files *.c` H_FILES=`git ls-files *.h` for F in "$C_FILES $H_FILES"; do echo "$F" perl -p -i -e 's/safe_memset\(&\(?([^,]*)\)?,\s*0,\s*sizeof\(\g1\)\)/i_zero_safe(&$1)/g' $F perl -p -i -e 's/safe_memset\(([^,]*),\s*0,\s*sizeof\(\*\g1\)\)/i_zero_safe($1)/g' $F perl -p -i -e 's/memset\(&\(?([^,]*)\)?,\s*0,\s*sizeof\(\g1\)\)/i_zero(&$1)/g' $F perl -p -i -e 's/memset\(([^,]*),\s*0,\s*sizeof\(\*\g1\)\)/i_zero($1)/g' $F done
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Wed, 11 Jan 2017 01:57:46 +0100
parents a8fc5f34b8fa
children 2e2563132d5f
files src/auth/auth-request-var-expand.c src/auth/auth-request.c src/auth/auth-settings.c src/auth/db-dict.c src/auth/db-ldap.c src/auth/main.c src/auth/passdb-pam.c src/config/config-connection.c src/config/config-filter.c src/config/config-parser.c src/config/doveconf.c src/config/old-set-parser.c src/dict/main.c src/director/login-connection.c src/doveadm/client-connection-http.c src/doveadm/client-connection.c src/doveadm/doveadm-auth-server.c src/doveadm/doveadm-auth.c src/doveadm/doveadm-cmd.c src/doveadm/doveadm-dsync.c src/doveadm/doveadm-fs.c src/doveadm/doveadm-kick.c src/doveadm/doveadm-log.c src/doveadm/doveadm-mail-batch.c src/doveadm/doveadm-mail-fetch.c src/doveadm/doveadm-mail-import.c src/doveadm/doveadm-mail-mailbox-status.c src/doveadm/doveadm-mail-server.c src/doveadm/doveadm-mail.c src/doveadm/doveadm-mount.c src/doveadm/doveadm-penalty.c src/doveadm/doveadm-print-formatted.c src/doveadm/doveadm-print-json.c src/doveadm/doveadm-print.c src/doveadm/doveadm-pw.c src/doveadm/doveadm-stats.c src/doveadm/doveadm-util.c src/doveadm/doveadm-who.c src/doveadm/doveadm-zlib.c src/doveadm/doveadm.c src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c src/doveadm/dsync/dsync-brain-mailbox.c src/doveadm/dsync/dsync-brain-mails.c src/doveadm/dsync/dsync-brain.c src/doveadm/dsync/dsync-ibc-stream.c src/doveadm/dsync/dsync-mail.c src/doveadm/dsync/dsync-mailbox-export.c src/doveadm/dsync/dsync-mailbox-import.c src/doveadm/dsync/dsync-mailbox-tree-fill.c src/doveadm/dsync/dsync-transaction-log-scan.c src/doveadm/main.c src/doveadm/server-connection.c src/imap-hibernate/imap-hibernate-client.c src/imap-login/client-authenticate.c src/imap-login/imap-proxy.c src/imap-urlauth/imap-urlauth-worker.c src/imap-urlauth/imap-urlauth.c src/imap/cmd-fetch.c src/imap/cmd-notify.c src/imap/cmd-select.c src/imap/cmd-setmetadata.c src/imap/cmd-store.c src/imap/imap-client.c src/imap/imap-commands-util.c src/imap/imap-commands.c src/imap/imap-fetch.c src/imap/imap-master-client.c src/imap/imap-notify.c src/imap/imap-state.c src/imap/imap-status.c src/imap/main.c src/indexer/indexer-worker.c src/indexer/master-connection.c src/lda/main.c src/lib-auth/auth-master.c src/lib-auth/auth-server-connection.c src/lib-dcrypt/dcrypt-gnutls.c src/lib-dcrypt/dcrypt.c src/lib-dcrypt/test-crypto.c src/lib-dict-extra/dict-fs.c src/lib-dict/dict-client.c src/lib-dict/dict-db.c src/lib-dict/dict-memcached-ascii.c src/lib-dict/dict-memcached.c src/lib-dict/dict-sql-settings.c src/lib-dict/dict-sql.c src/lib-dict/dict.c src/lib-dns/dns-lookup.c src/lib-fs/fs-api.c src/lib-fs/fs-dict.c src/lib-fs/fs-posix.c src/lib-fs/fs-test-async.c src/lib-fs/fs-test.c src/lib-fts/fts-icu.c src/lib-http/http-auth.c src/lib-http/http-client-connection.c src/lib-http/http-client-host.c src/lib-http/http-client-request.c src/lib-http/http-client.c src/lib-http/http-date.c src/lib-http/http-message-parser.c src/lib-http/http-parser.c src/lib-http/http-request-parser.c src/lib-http/http-response-parser.c src/lib-http/http-response.c src/lib-http/http-server-connection.c src/lib-http/http-server-response.c src/lib-http/http-url.c src/lib-http/test-http-auth.c src/lib-http/test-http-client-errors.c src/lib-http/test-http-client.c src/lib-http/test-http-payload.c src/lib-http/test-http-response-parser.c src/lib-http/test-http-server-errors.c src/lib-http/test-http-server.c src/lib-imap-client/imapc-client.c src/lib-imap-client/imapc-connection.c src/lib-imap-storage/imap-metadata.c src/lib-imap-storage/imap-msgpart-url.c src/lib-imap-storage/imap-msgpart.c src/lib-imap-urlauth/imap-urlauth-backend.c src/lib-imap-urlauth/imap-urlauth-connection.c src/lib-imap-urlauth/imap-urlauth-fetch.c src/lib-imap/imap-bodystructure.c src/lib-imap/imap-id.c src/lib-index/mail-cache-compress.c src/lib-index/mail-cache-fields.c src/lib-index/mail-cache-lookup.c src/lib-index/mail-cache-transaction.c src/lib-index/mail-index-alloc-cache.c src/lib-index/mail-index-fsck.c src/lib-index/mail-index-map-read.c src/lib-index/mail-index-map.c src/lib-index/mail-index-modseq.c src/lib-index/mail-index-strmap.c src/lib-index/mail-index-sync-ext.c src/lib-index/mail-index-sync-keywords.c src/lib-index/mail-index-sync-update.c src/lib-index/mail-index-sync.c src/lib-index/mail-index-transaction-export.c src/lib-index/mail-index-transaction-update.c src/lib-index/mail-index-transaction-view.c src/lib-index/mail-index-transaction.c src/lib-index/mail-index-view-sync.c src/lib-index/mail-index-view.c src/lib-index/mail-index.c src/lib-index/mail-transaction-log-append.c src/lib-index/mail-transaction-log-file.c src/lib-index/mail-transaction-log.c src/lib-index/test-mail-index-map.c src/lib-index/test-mail-index-sync-ext.c src/lib-index/test-mail-index-transaction-finish.c src/lib-index/test-mail-transaction-log-view.c src/lib-lda/duplicate.c src/lib-lda/mail-deliver.c src/lib-lda/smtp-client.c src/lib-ldap/ldap-compare.c src/lib-ldap/ldap-connection.c src/lib-mail/istream-attachment-extractor.c src/lib-mail/mbox-from.c src/lib-mail/message-address.c src/lib-mail/message-date.c src/lib-mail/message-header-decode.c src/lib-mail/message-header-parser.c src/lib-mail/message-parser.c src/lib-mail/message-part-serialize.c src/lib-mail/message-search.c src/lib-mail/message-snippet.c src/lib-mail/rfc2231-parser.c src/lib-mail/rfc822-parser.c src/lib-mail/test-istream-attachment.c src/lib-mail/test-message-decoder.c src/lib-mail/test-message-header-hash.c src/lib-mail/test-message-search.c src/lib-master/master-auth.c src/lib-master/master-login.c src/lib-master/master-service-settings.c src/lib-master/master-service-ssl.c src/lib-master/master-service.c src/lib-master/mountpoint-list.c src/lib-master/test-master-service-settings-cache.c src/lib-ntlm/ntlm-message.c src/lib-settings/settings-parser.c src/lib-settings/settings.c src/lib-smtp/lmtp-client.c src/lib-sql/driver-cassandra.c src/lib-ssl-iostream/iostream-ssl.c src/lib-storage/index/dbox-common/dbox-save.c src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c src/lib-storage/index/dbox-multi/mdbox-map.c src/lib-storage/index/dbox-multi/mdbox-save.c src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c src/lib-storage/index/dbox-multi/mdbox-storage.c src/lib-storage/index/dbox-single/sdbox-storage.c src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c src/lib-storage/index/imapc/imapc-list.c src/lib-storage/index/imapc/imapc-storage.c src/lib-storage/index/index-attachment.c src/lib-storage/index/index-attribute.c src/lib-storage/index/index-mail-binary.c src/lib-storage/index/index-mail-headers.c src/lib-storage/index/index-mail.c src/lib-storage/index/index-mailbox-size.c src/lib-storage/index/index-pop3-uidl.c src/lib-storage/index/index-rebuild.c src/lib-storage/index/index-search-result.c src/lib-storage/index/index-search.c src/lib-storage/index/index-sort-string.c src/lib-storage/index/index-sort.c src/lib-storage/index/index-storage.c src/lib-storage/index/index-sync-changes.c src/lib-storage/index/index-sync.c src/lib-storage/index/index-thread-finish.c src/lib-storage/index/index-thread.c src/lib-storage/index/index-transaction.c src/lib-storage/index/maildir/maildir-copy.c src/lib-storage/index/maildir/maildir-mail.c src/lib-storage/index/maildir/maildir-sync-index.c src/lib-storage/index/maildir/maildir-uidlist.c src/lib-storage/index/mbox/mbox-lock.c src/lib-storage/index/mbox/mbox-save.c src/lib-storage/index/mbox/mbox-sync-list-index.c src/lib-storage/index/mbox/mbox-sync-parse.c src/lib-storage/index/mbox/mbox-sync-rewrite.c src/lib-storage/index/mbox/mbox-sync.c src/lib-storage/index/pop3c/pop3c-client.c src/lib-storage/index/pop3c/pop3c-storage.c src/lib-storage/index/pop3c/pop3c-sync.c src/lib-storage/list/mailbox-list-index-backend.c src/lib-storage/list/mailbox-list-index-notify.c src/lib-storage/list/mailbox-list-index-status.c src/lib-storage/list/mailbox-list-index-sync.c src/lib-storage/list/mailbox-list-iter.c src/lib-storage/list/mailbox-list-notify-tree.c src/lib-storage/list/mailbox-list-subscriptions.c src/lib-storage/list/subscription-file.c src/lib-storage/mail-search-args-simplify.c src/lib-storage/mail-search-build.c src/lib-storage/mail-storage-hooks.c src/lib-storage/mail-storage-service.c src/lib-storage/mail-storage.c src/lib-storage/mail-user.c src/lib-storage/mailbox-attribute.c src/lib-storage/mailbox-list.c src/lib/buffer.c src/lib/connection.c src/lib/failures.c src/lib/fd-close-on-exec.c src/lib/file-dotlock.c src/lib/file-lock.c src/lib/file-set-size.c src/lib/ioloop-epoll.c src/lib/ioloop.c src/lib/iso8601-date.c src/lib/istream-sized.c src/lib/istream.c src/lib/lib-signals.c src/lib/md4.c src/lib/md5.c src/lib/mempool-alloconly.c src/lib/mountpoint.c src/lib/net.c src/lib/ostream.c src/lib/restrict-access.c src/lib/sendfile-util.c src/lib/seq-range-array.c src/lib/sha3.c src/lib/test-ioloop.c src/lib/test-utc-mktime.c src/lib/timing.c src/lib/uri-util.c src/lib/var-expand.c src/lmtp/client.c src/lmtp/commands.c src/lmtp/lmtp-proxy.c src/lmtp/main.c src/log/log-connection.c src/login-common/client-common-auth.c src/login-common/login-proxy-state.c src/login-common/login-settings.c src/login-common/main.c src/login-common/sasl-server.c src/login-common/ssl-proxy-openssl.c src/master/main.c src/master/service-listen.c src/master/service-log.c src/master/service-monitor.c src/plugins/acl/acl-api.c src/plugins/acl/acl-attributes.c src/plugins/acl/acl-backend-vfile-update.c src/plugins/acl/acl-backend-vfile.c src/plugins/acl/acl-global-file.c src/plugins/acl/acl-mailbox-list.c src/plugins/acl/acl-mailbox.c src/plugins/acl/doveadm-acl.c src/plugins/dict-ldap/dict-ldap-settings.c src/plugins/dict-ldap/dict-ldap.c src/plugins/expire/doveadm-expire.c src/plugins/expire/expire-plugin.c src/plugins/fts-lucene/doveadm-fts-lucene.c src/plugins/fts-solr/fts-backend-solr.c src/plugins/fts-solr/solr-connection.c src/plugins/fts-squat/squat-trie.c src/plugins/fts-squat/squat-uidlist.c src/plugins/fts/doveadm-fts.c src/plugins/fts/fts-api.c src/plugins/fts/fts-build-mail.c src/plugins/fts/fts-parser-tika.c src/plugins/fts/fts-search.c src/plugins/fts/xml2text.c src/plugins/imap-acl/imap-acl-plugin.c src/plugins/last-login/last-login-plugin.c src/plugins/mail-crypt/doveadm-mail-crypt.c src/plugins/mail-crypt/mail-crypt-acl-plugin.c src/plugins/mail-crypt/mail-crypt-global-key.c src/plugins/mail-crypt/mail-crypt-plugin.c src/plugins/mail-crypt/mail-crypt-pluginenv.c src/plugins/mail-crypt/test-mail-global-key.c src/plugins/mail-crypt/test-mail-key.c src/plugins/pop3-migration/pop3-migration-plugin.c src/plugins/push-notification/push-notification-driver-ox.c src/plugins/push-notification/push-notification-event-flagsclear.c src/plugins/push-notification/push-notification-event-flagsset.c src/plugins/push-notification/push-notification-event-messageappend.c src/plugins/push-notification/push-notification-event-messagenew.c src/plugins/quota-clone/quota-clone-plugin.c src/plugins/quota/doveadm-quota.c src/plugins/quota/quota-count.c src/plugins/quota/quota-dict.c src/plugins/quota/quota-status.c src/plugins/quota/quota-util.c src/plugins/quota/quota.c src/plugins/quota/test-quota-util.c src/plugins/stats/mail-stats-fill.c src/plugins/virtual/virtual-config.c src/plugins/virtual/virtual-mail.c src/plugins/virtual/virtual-search.c src/plugins/virtual/virtual-sync.c src/plugins/zlib/zlib-plugin.c src/pop3-login/pop3-proxy.c src/pop3/main.c src/replication/replicator/replicator-queue-auth.c src/replication/replicator/replicator-queue.c src/stats/client-export.c src/stats/client-reset.c src/stats/main.c src/util/script-login.c
diffstat 347 files changed, 689 insertions(+), 689 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/auth-request-var-expand.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/auth/auth-request-var-expand.c	Wed Jan 11 01:57:46 2017 +0100
@@ -246,7 +246,7 @@
 {
 	struct auth_request_var_expand_ctx ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.auth_request = auth_request;
 	ctx.escape_func = escape_func == NULL ? escape_none : escape_func;
 	var_expand_with_funcs(dest, str, table,
--- a/src/auth/auth-request.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/auth/auth-request.c	Wed Jan 11 01:57:46 2017 +0100
@@ -2106,7 +2106,7 @@
 	unsigned int secs;
 
 	/* need to do dns lookup for the host */
-	memset(&dns_set, 0, sizeof(dns_set));
+	i_zero(&dns_set);
 	dns_set.dns_client_socket_path = AUTH_DNS_SOCKET_PATH;
 	dns_set.timeout_msecs = AUTH_DNS_DEFAULT_TIMEOUT_MSECS;
 	value = auth_fields_find(request->extra_fields, "proxy_timeout");
--- a/src/auth/auth-settings.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/auth/auth-settings.c	Wed Jan 11 01:57:46 2017 +0100
@@ -513,7 +513,7 @@
 	const char *error;
 	void **sets;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.module = "auth";
 	input.service = service;
--- a/src/auth/db-dict.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/auth/db-dict.c	Wed Jan 11 01:57:46 2017 +0100
@@ -297,7 +297,7 @@
 	p_array_init(&conn->set.parsed_passdb_objects, pool, 2);
 	p_array_init(&conn->set.parsed_userdb_objects, pool, 2);
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.conn = conn;
 	if (!settings_read(config_path, NULL, parse_setting,
 			   parse_section, &ctx, &error))
--- a/src/auth/db-ldap.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/auth/db-ldap.c	Wed Jan 11 01:57:46 2017 +0100
@@ -629,7 +629,7 @@
 	struct ldap_field_find_subquery_context ctx;
 	string_t *tmp_str = t_str_new(64);
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	t_array_init(&ctx.attr_names, 8);
 	ctx.name = named_res->field->name;
 
@@ -904,7 +904,7 @@
 		if (conn->ld == NULL)
 			return;
 
-		memset(&timeout, 0, sizeof(timeout));
+		i_zero(&timeout);
 		ret = ldap_result(conn->ld, LDAP_RES_ANY, 0, &timeout, &msg);
 #ifdef OPENLDAP_ASYNC_WORKAROUND
 		if (ret == 0) {
@@ -999,7 +999,7 @@
 	struct db_ldap_sasl_bind_context context;
 	int ret;
 
-	memset(&context, 0, sizeof(context));
+	i_zero(&context);
 	context.authcid = conn->set.dn;
 	context.passwd = conn->set.dnpass;
 	context.realm = conn->set.sasl_realm;
@@ -1211,7 +1211,7 @@
 
 	if (debug) {
 		if (gettimeofday(&start, NULL) < 0)
-			memset(&start, 0, sizeof(start));
+			i_zero(&start);
 	}
 	i_assert(conn->pending_count == 0);
 
--- a/src/auth/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/auth/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -189,7 +189,7 @@
 
 	services = read_global_settings();
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 	mod_set.debug = global_auth_settings->debug;
@@ -220,7 +220,7 @@
 {
 	struct module_dir_load_settings mod_set;
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 	mod_set.debug = global_auth_settings->debug;
--- a/src/auth/passdb-pam.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/auth/passdb-pam.c	Wed Jan 11 01:57:46 2017 +0100
@@ -261,7 +261,7 @@
 	conv.conv = pam_userpass_conv;
 	conv.appdata_ptr = &ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.request = request;
 	ctx.pass = password;
 
--- a/src/config/config-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/config/config-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -75,7 +75,7 @@
 
 	/* [<args>] */
 	t_array_init(&modules, 4);
-	memset(&filter, 0, sizeof(filter));
+	i_zero(&filter);
 	for (; *args != NULL; args++) {
 		if (strncmp(*args, "service=", 8) == 0)
 			filter.service = *args + 8;
--- a/src/config/config-filter.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/config/config-filter.c	Wed Jan 11 01:57:46 2017 +0100
@@ -215,7 +215,7 @@
 	ARRAY_TYPE(const_string) service_names;
 	unsigned int i;
 
-	memset(output_r, 0, sizeof(*output_r));
+	i_zero(output_r);
 
 	p_array_init(&matches, pool, 8);
 	p_array_init(&service_names, pool, 8);
--- a/src/config/config-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/config/config-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -967,7 +967,7 @@
 		}
 	}
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.pool = pool_alloconly_create(MEMPOOL_GROWING"config file parser", 1024*256);
 	ctx.path = path;
 	ctx.hide_errors = fd == -1;
@@ -982,7 +982,7 @@
 					     settings_parser_flags);
 	}
 
-	memset(&root, 0, sizeof(root));
+	i_zero(&root);
 	root.path = path;
 	ctx.cur_input = &root;
 	ctx.expand_values = expand_values;
@@ -1052,7 +1052,7 @@
 	struct service_settings *const *services, *service_set;
 	unsigned int i, count;
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set);
 	module_dir_init(modules);
--- a/src/config/doveconf.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/config/doveconf.c	Wed Jan 11 01:57:46 2017 +0100
@@ -608,7 +608,7 @@
 	const char *host2;
 	bool duplicates = FALSE;
 
-	memset(&fmt, 0, sizeof(fmt));
+	i_zero(&fmt);
 	if (arg != NULL) {
 		/* host%d, host%2d, host%02d */
 		p = strchr(arg, '%');
@@ -723,7 +723,7 @@
 		i_set_failure_exit_callback(failure_exit_callback);
 	}
 
-	memset(&filter, 0, sizeof(filter));
+	i_zero(&filter);
 	master_service = master_service_init("config",
 					     MASTER_SERVICE_FLAG_STANDALONE,
 					     &argc, &argv, "adf:hHm:nNpPexS");
--- a/src/config/old-set-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/config/old-set-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -475,7 +475,7 @@
 		return FALSE;
 	}
 	ctx->old->seen_auth_section = TRUE;
-	memset(&ctx->old->socket_set, 0, sizeof(ctx->old->socket_set));
+	i_zero(&ctx->old->socket_set);
 
 	ctx->old->auth_section++;
 	if ((strcmp(key, "passdb") == 0 || strcmp(key, "userdb") == 0) &&
@@ -570,7 +570,7 @@
 		config_apply_line(ctx, "group",
 			  t_strdup_printf("%s/group=%s", prefix, set->group), NULL);
 	}
-	memset(&ctx->old->socket_set, 0, sizeof(ctx->old->socket_set));
+	i_zero(&ctx->old->socket_set);
 }
 
 bool old_settings_handle(struct config_parser_context *ctx,
--- a/src/dict/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/dict/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -106,7 +106,7 @@
 				    NULL));
 	}
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 
--- a/src/director/login-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/director/login-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -206,7 +206,7 @@
 		args++;
 	}
 
-	memset(&temp_request, 0, sizeof(temp_request));
+	i_zero(&temp_request);
 	for (; *args != NULL; args++) {
 		if (strncmp(*args, "proxy", 5) == 0 &&
 		    ((*args)[5] == '=' || (*args)[5] == '\0'))
--- a/src/doveadm/client-connection-http.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/client-connection-http.c	Wed Jan 11 01:57:46 2017 +0100
@@ -328,7 +328,7 @@
 	struct istream *is;
 	const char *user;
 	struct ioloop *ioloop,*prev_ioloop = current_ioloop;
-	memset(&cctx, 0, sizeof(cctx));
+	i_zero(&cctx);
 
 	// create iostream
 	doveadm_print_ostream = iostream_temp_create("/tmp/doveadm.", 0);
--- a/src/doveadm/client-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/client-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -289,7 +289,7 @@
 		i_error("doveadm client: No command given");
 		return FALSE;
 	}
-	memset(&cctx, 0, sizeof(cctx));
+	i_zero(&cctx);
 	cctx.cli = FALSE;
 	cctx.tcp_server = TRUE;
 
@@ -463,7 +463,7 @@
 	const char *error;
 	void *set;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.service = "doveadm";
 	input.local_ip = conn->local_ip;
--- a/src/doveadm/doveadm-auth-server.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-auth-server.c	Wed Jan 11 01:57:46 2017 +0100
@@ -295,7 +295,7 @@
 	pool_t pool;
 	int ret;
 
-	memset(&service_input, 0, sizeof(service_input));
+	i_zero(&service_input);
 	service_input.module = "mail";
 	service_input.service = input->info.service;
 	service_input.username = input->username;
@@ -367,7 +367,7 @@
 	(void)doveadm_cmd_param_str(cctx, "field", &show_field);
 	(void)doveadm_cmd_param_bool(cctx, "userdb-only", &userdb_only);
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	if (doveadm_cmd_param_array(cctx, "auth-info", &optval))
 		for(;*optval != NULL; optval++)
 			auth_user_info_parse(&input.info, *optval);
--- a/src/doveadm/doveadm-auth.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-auth.c	Wed Jan 11 01:57:46 2017 +0100
@@ -179,7 +179,7 @@
 	base64_resp = t_str_new(128);
 	base64_encode(str_data(init_resp), str_len(init_resp), base64_resp);
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info.mech = "PLAIN";
 	info.service = input->info.service;
 	info.local_ip = input->info.local_ip;
@@ -295,7 +295,7 @@
 
 static void authtest_input_init(struct authtest_input *input)
 {
-	memset(input, 0, sizeof(*input));
+	i_zero(input);
 	input->info.service = "doveadm";
 	input->info.debug = doveadm_settings->auth_debug;
 }
@@ -362,7 +362,7 @@
 	struct master_auth_request master_auth_req;
 	buffer_t buf;
 
-	memset(&master_auth_req, 0, sizeof(master_auth_req));
+	i_zero(&master_auth_req);
 	master_auth_req.tag = 1;
 	master_auth_req.auth_pid = input->auth_pid;
 	master_auth_req.auth_id = input->auth_id;
@@ -549,7 +549,7 @@
 	pool_t pool;
 	int ret;
 
-	memset(&service_input, 0, sizeof(service_input));
+	i_zero(&service_input);
 	service_input.module = "mail";
 	service_input.service = input->info.service;
 	service_input.username = input->username;
--- a/src/doveadm/doveadm-cmd.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-cmd.c	Wed Jan 11 01:57:46 2017 +0100
@@ -381,7 +381,7 @@
 	for(size_t i=0; par[i].name != NULL; i++) {
 		struct option longopt;
 
-		memset(&longopt, 0, sizeof(longopt));
+		i_zero(&longopt);
 		longopt.name = par[i].name;
 		if (par[i].short_opt != '\0') {
 			longopt.val = par[i].short_opt;
--- a/src/doveadm/doveadm-dsync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-dsync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -564,7 +564,7 @@
 	bool remote_only_changes;
 	int ret = 0;
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	if (_ctx->cur_client_ip.family != 0) {
 		/* include the doveadm client's IP address in the ps output */
 		set.process_title_prefix = t_strdup_printf(
@@ -772,7 +772,7 @@
 	if (ctx->ssl_ctx != NULL)
 		return 0;
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	ssl_set.ca_dir = mail_set->ssl_client_ca_dir;
 	ssl_set.ca_file = mail_set->ssl_client_ca_file;
 	ssl_set.verify_remote_cert = TRUE;
--- a/src/doveadm/doveadm-fs.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-fs.c	Wed Jan 11 01:57:46 2017 +0100
@@ -35,12 +35,12 @@
 			fs_cmd_help(cmd);
 	}
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	ssl_set.ca_dir = doveadm_settings->ssl_client_ca_dir;
 	ssl_set.ca_file = doveadm_settings->ssl_client_ca_file;
 	ssl_set.verbose = doveadm_debug;
 
-	memset(&fs_set, 0, sizeof(fs_set));
+	i_zero(&fs_set);
 	fs_set.ssl_client_set = &ssl_set;
 	fs_set.temp_dir = "/tmp";
 	fs_set.base_dir = doveadm_settings->base_dir;
@@ -343,7 +343,7 @@
 	const char *fname, *const *fnamep;
 	int ret;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.fs = fs;
 	ctx.path_prefix = path_prefix;
 	ctx.files_count = I_MAX(async_count, 1);
@@ -443,7 +443,7 @@
 
 	fs = cmd_fs_init(&argc, &argv, 0, cmd_fs_delete);
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.fs = fs;
 	ctx.path_prefix = "";
 	ctx.files_count = I_MAX(async_count, 1);
--- a/src/doveadm/doveadm-kick.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-kick.c	Wed Jan 11 01:57:46 2017 +0100
@@ -41,7 +41,7 @@
 	struct kick_pid *k_pid;
 	struct kick_user new_user, *user;
 
-	memset(&new_user, 0, sizeof(new_user));
+	i_zero(&new_user);
 
 	k_pid = hash_table_lookup(ctx->pids, POINTER_CAST(line->pid));
 	if (k_pid == NULL) {
@@ -179,7 +179,7 @@
 	const char *const *masks;
 	struct kick_context ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	if (!doveadm_cmd_param_str(cctx, "socket-path", &(ctx.who.anvil_path)))
 		ctx.who.anvil_path = t_strconcat(doveadm_settings->base_dir, "/anvil", NULL);
 	(void)doveadm_cmd_param_bool(cctx, "force", &(ctx.force_kick));
--- a/src/doveadm/doveadm-log.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-log.c	Wed Jan 11 01:57:46 2017 +0100
@@ -35,7 +35,7 @@
 	master_service->flags |= MASTER_SERVICE_FLAG_DONT_LOG_TO_STDERR;
 	master_service_init_log(master_service, "doveadm: ");
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	for (i = 0; i < LAST_LOG_TYPE; i++) {
 		const char *prefix = failure_log_type_prefixes[i];
 
@@ -221,7 +221,7 @@
 	struct log_find_context ctx;
 	unsigned int i;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.pool = pool_alloconly_create("log file", 1024*32);
 	hash_table_create(&ctx.files, ctx.pool, 0, str_hash, strcmp);
 
--- a/src/doveadm/doveadm-mail-batch.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-mail-batch.c	Wed Jan 11 01:57:46 2017 +0100
@@ -65,7 +65,7 @@
 	if (cmd_ver2 == NULL)
 		cmd = doveadm_mail_cmd_find_from_argv(argv[0], &argc, &argv);
 	else {
-		memset(&tmpcmd, 0, sizeof(tmpcmd));
+		i_zero(&tmpcmd);
 		tmpcmd.usage_args = cmd_ver2->usage;
 		tmpcmd.name = cmd_ver2->name;
 		tmpcmd.alloc = cmd_ver2->mail_cmd;
--- a/src/doveadm/doveadm-mail-fetch.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-mail-fetch.c	Wed Jan 11 01:57:46 2017 +0100
@@ -533,10 +533,10 @@
 	struct fetch_field hdr_field, body_field;
 	struct imap_msgpart *msgpart;
 
-	memset(&hdr_field, 0, sizeof(hdr_field));
+	i_zero(&hdr_field);
 	hdr_field.print = fetch_hdr_field;
 
-	memset(&body_field, 0, sizeof(body_field));
+	i_zero(&body_field);
 	body_field.print = fetch_body_field;
 
 	t_array_init(&ctx->fields, 32);
--- a/src/doveadm/doveadm-mail-import.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-mail-import.c	Wed Jan 11 01:57:46 2017 +0100
@@ -162,7 +162,7 @@
 	const char *error;
 
 	/* create a user for accessing the source storage */
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "mail";
 	input.username = ctx->src_username != NULL ?
 			 ctx->src_username :
--- a/src/doveadm/doveadm-mail-mailbox-status.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-mail-mailbox-status.c	Wed Jan 11 01:57:46 2017 +0100
@@ -155,8 +155,8 @@
 	const struct mailbox_info *info;
 	int ret = 0;
 
-	memset(&ctx->total_status, 0, sizeof(ctx->total_status));
-	memset(&ctx->total_metadata, 0, sizeof(ctx->total_metadata));
+	i_zero(&ctx->total_status);
+	i_zero(&ctx->total_metadata);
 
 	iter = doveadm_mailbox_list_iter_init(_ctx, user, ctx->search_args,
 					      iter_flags);
--- a/src/doveadm/doveadm-mail-server.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-mail-server.c	Wed Jan 11 01:57:46 2017 +0100
@@ -194,7 +194,7 @@
 	/* make sure we have an auth connection */
 	mail_storage_service_init_settings(ctx->storage_service, input);
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info.service = master_service_get_name(master_service);
 	info.local_ip = input->local_ip;
 	info.remote_ip = input->remote_ip;
--- a/src/doveadm/doveadm-mail.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-mail.c	Wed Jan 11 01:57:46 2017 +0100
@@ -343,7 +343,7 @@
 doveadm_cctx_to_storage_service_input(const struct doveadm_cmd_context *cctx,
 					struct mail_storage_service_input *input_r)
 {
-	memset(input_r, 0, sizeof(*input_r));
+	i_zero(input_r);
 	input_r->service = "doveadm";
 	input_r->remote_ip = cctx->remote_ip;
 	input_r->remote_port = cctx->remote_port;
@@ -642,7 +642,7 @@
 	ctx->cli = TRUE;
 	ctx->cur_username = getenv("USER");
 
-	memset(&cctx, 0, sizeof(cctx));
+	i_zero(&cctx);
 
 	getopt_args = "AF:S:u:";
 	/* keep context's getopt_args first in case it contains '+' */
@@ -908,7 +908,7 @@
 	for (i = 0; i < N_ELEMENTS(mail_commands_ver2); i++)
 		doveadm_cmd_register_ver2(mail_commands_ver2[i]);
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 	mod_set.debug = doveadm_debug;
--- a/src/doveadm/doveadm-mount.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-mount.c	Wed Jan 11 01:57:46 2017 +0100
@@ -85,7 +85,7 @@
 			mountpoint_list_default_ignore_prefixes,
 			mountpoint_list_default_ignore_types);
 	} else {
-		memset(&rec, 0, sizeof(rec));
+		i_zero(&rec);
 		rec.mount_path = argv[1];
 		rec.state = argv[2] != NULL ? argv[2] :
 			MOUNTPOINT_STATE_DEFAULT;
--- a/src/doveadm/doveadm-penalty.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-penalty.c	Wed Jan 11 01:57:46 2017 +0100
@@ -32,7 +32,7 @@
 	const char *last_penalty_str = args[2];
 	const char *last_update_str = args[3];
 
-	memset(line_r, 0, sizeof(*line_r));
+	i_zero(line_r);
 
 	(void)net_addr2ip(ident, &line_r->ip);
 	if (str_to_uint(penalty_str, &line_r->penalty) < 0 ||
@@ -93,7 +93,7 @@
 	struct penalty_context ctx;
 	const char *netmask;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	if (!doveadm_cmd_param_str(cctx, "socket-path", &(ctx.anvil_path)))
 		ctx.anvil_path = t_strconcat(doveadm_settings->base_dir, "/anvil", NULL);
 
--- a/src/doveadm/doveadm-print-formatted.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-print-formatted.c	Wed Jan 11 01:57:46 2017 +0100
@@ -28,7 +28,7 @@
 
 static void doveadm_print_formatted_init(void)
 {
-	memset(&ctx,0,sizeof(ctx));
+	i_zero(&ctx);
 	ctx.pool = pool_alloconly_create("doveadm formatted print", 1024);
 	ctx.buf = str_new(ctx.pool, 256);
 	p_array_init(&ctx.headers, ctx.pool, 8);
@@ -39,7 +39,7 @@
 doveadm_print_formatted_header(const struct doveadm_print_header *hdr)
 {
 	struct var_expand_table entry;
-	memset(&entry, 0, sizeof(entry));
+	i_zero(&entry);
 	entry.key = '\0';
 	entry.long_key = p_strdup(ctx.pool, hdr->key);
 	entry.value = NULL;
--- a/src/doveadm/doveadm-print-json.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-print-json.c	Wed Jan 11 01:57:46 2017 +0100
@@ -27,7 +27,7 @@
 
 static void doveadm_print_json_init(void)
 {
-	memset(&ctx,0,sizeof(ctx));
+	i_zero(&ctx);
 	ctx.pool = pool_alloconly_create("doveadm json print", 1024);
 	ctx.str = str_new(ctx.pool, 256);
 	p_array_init(&ctx.headers, ctx.pool, 1);
--- a/src/doveadm/doveadm-print.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-print.c	Wed Jan 11 01:57:46 2017 +0100
@@ -39,7 +39,7 @@
 
 	i_assert(title != NULL);
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.key = key;
 	hdr.title = title;
 	hdr.flags = flags;
--- a/src/doveadm/doveadm-pw.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-pw.c	Wed Jan 11 01:57:46 2017 +0100
@@ -32,7 +32,7 @@
 	random_init();
 	password_schemes_init();
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 	mod_set.ignore_dlopen_errors = TRUE;
--- a/src/doveadm/doveadm-stats.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-stats.c	Wed Jan 11 01:57:46 2017 +0100
@@ -471,7 +471,7 @@
 {
 	struct top_context ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.path = path;
 	ctx.fd = doveadm_connect(path);
 	ctx.prev_pool = pool_alloconly_create("stats top", 1024*16);
--- a/src/doveadm/doveadm-util.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-util.c	Wed Jan 11 01:57:46 2017 +0100
@@ -27,7 +27,7 @@
 	/* some doveadm plugins have dependencies to mail plugins. we can load
 	   only those whose dependencies have been loaded earlier, the rest are
 	   ignored. */
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 	mod_set.debug = doveadm_debug;
--- a/src/doveadm/doveadm-who.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-who.c	Wed Jan 11 01:57:46 2017 +0100
@@ -57,7 +57,7 @@
 	const char *refcount_str = args[2];
 	const char *p, *ip_str;
 
-	memset(line_r, 0, sizeof(*line_r));
+	i_zero(line_r);
 
 	/* ident = service/ip/username (imap, pop3)
 	   or      service/username (lmtp) */
@@ -287,7 +287,7 @@
 	struct who_context ctx;
 	bool separate_connections = FALSE;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	if (!doveadm_cmd_param_str(cctx, "socket-path", &(ctx.anvil_path)))
 		ctx.anvil_path = t_strconcat(doveadm_settings->base_dir, "/anvil", NULL);
 	(void)doveadm_cmd_param_bool(cctx, "separate-connections", &separate_connections);
--- a/src/doveadm/doveadm-zlib.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm-zlib.c	Wed Jan 11 01:57:46 2017 +0100
@@ -162,7 +162,7 @@
 	i_info("Connected to %s port %u. Ctrl-D starts compression",
 	       net_ip2addr(&ips[0]), port);
 
-	memset(&client, 0, sizeof(client));
+	i_zero(&client);
 	client.fd = fd;
 	client.input = i_stream_create_fd(fd, (size_t)-1, FALSE);
 	client.output = o_stream_create_fd(fd, 0, FALSE);
--- a/src/doveadm/doveadm.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/doveadm.c	Wed Jan 11 01:57:46 2017 +0100
@@ -254,7 +254,7 @@
 	const struct doveadm_settings *set;
 	const char *error;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.module = "doveadm";
 	input.service = "doveadm";
@@ -296,7 +296,7 @@
 	bool quick_init = FALSE;
 	int c;
 
-	memset(&cctx,0,sizeof(cctx));
+	i_zero(&cctx);
 	cctx.cli = TRUE;
 
 	i_set_failure_exit_callback(failure_exit_callback);
--- a/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -17,7 +17,7 @@
 	const char *errstr;
 	int ret;
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	memcpy(update.mailbox_guid, mailbox_guid, sizeof(update.mailbox_guid));
 	update.uid_validity = uid_validity;
 
@@ -72,7 +72,7 @@
 				guid_128_to_string(metadata.guid),
 				guid_128_to_string(mailbox_guid));
 		}
-		memset(&update, 0, sizeof(update));
+		i_zero(&update);
 		memcpy(update.mailbox_guid, mailbox_guid,
 		       sizeof(update.mailbox_guid));
 		if (mailbox_update(box, &update) < 0) {
--- a/src/doveadm/dsync/dsync-brain-mailbox.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-brain-mailbox.c	Wed Jan 11 01:57:46 2017 +0100
@@ -154,13 +154,13 @@
 	dsync_mailbox_cache_field_dup(&brain->local_dsync_box.cache_fields,
 				      &local_dsync_box->cache_fields,
 				      brain->dsync_box_pool);
-	memset(&brain->remote_dsync_box, 0, sizeof(brain->remote_dsync_box));
+	i_zero(&brain->remote_dsync_box);
 
 	state = dsync_mailbox_state_find(brain, local_dsync_box->mailbox_guid);
 	if (state != NULL)
 		brain->mailbox_state = *state;
 	else {
-		memset(&brain->mailbox_state, 0, sizeof(brain->mailbox_state));
+		i_zero(&brain->mailbox_state);
 		memcpy(brain->mailbox_state.mailbox_guid,
 		       local_dsync_box->mailbox_guid,
 		       sizeof(brain->mailbox_state.mailbox_guid));
@@ -421,7 +421,7 @@
 
 	i_assert(status.uidvalidity != 0 || status.messages == 0);
 
-	memset(dsync_box_r, 0, sizeof(*dsync_box_r));
+	i_zero(dsync_box_r);
 	memcpy(dsync_box_r->mailbox_guid, metadata.guid,
 	       sizeof(dsync_box_r->mailbox_guid));
 	dsync_box_r->uid_validity = status.uidvalidity;
@@ -681,7 +681,7 @@
 	bool ret = TRUE;
 
 	*reason_r = NULL;
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 
 	if (local_box->uid_validity != remote_box->uid_validity) {
 		/* Keep the UIDVALIDITY for the mailbox that has more
@@ -730,7 +730,7 @@
 			brain->master_brain ? 'M' : 'S',
 			guid_128_to_string(dsync_box->mailbox_guid));
 	}
-	memset(&delete_box, 0, sizeof(delete_box));
+	i_zero(&delete_box);
 	memcpy(delete_box.mailbox_guid, dsync_box->mailbox_guid,
 	       sizeof(delete_box.mailbox_guid));
 	t_array_init(&delete_box.cache_fields, 0);
--- a/src/doveadm/dsync/dsync-brain-mails.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-brain-mails.c	Wed Jan 11 01:57:46 2017 +0100
@@ -231,7 +231,7 @@
 		return;
 
 	/* finished with this mailbox */
-	memset(&state, 0, sizeof(state));
+	i_zero(&state);
 	memcpy(state.mailbox_guid, brain->local_dsync_box.mailbox_guid,
 	       sizeof(state.mailbox_guid));
 	state.last_uidvalidity = brain->local_dsync_box.uid_validity;
--- a/src/doveadm/dsync/dsync-brain.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-brain.c	Wed Jan 11 01:57:46 2017 +0100
@@ -244,7 +244,7 @@
 	}
 	dsync_brain_mailbox_trees_init(brain);
 
-	memset(&ibc_set, 0, sizeof(ibc_set));
+	i_zero(&ibc_set);
 	ibc_set.hostname = my_hostdomain();
 	ibc_set.sync_ns_prefixes = sync_ns_str == NULL ?
 		NULL : str_c(sync_ns_str);
@@ -295,7 +295,7 @@
 		brain->verbose_proctitle = FALSE;
 	}
 
-	memset(&ibc_set, 0, sizeof(ibc_set));
+	i_zero(&ibc_set);
 	ibc_set.hdr_hash_v2 = TRUE;
 	ibc_set.hostname = my_hostdomain();
 	dsync_ibc_send_handshake(ibc, &ibc_set);
--- a/src/doveadm/dsync/dsync-ibc-stream.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-ibc-stream.c	Wed Jan 11 01:57:46 2017 +0100
@@ -936,7 +936,7 @@
 	const char *value;
 	enum dsync_ibc_recv_ret ret;
 
-	memset(state_r, 0, sizeof(*state_r));
+	i_zero(state_r);
 
 	ret = dsync_ibc_stream_input_next(ibc, ITEM_MAILBOX_STATE, &decoder);
 	if (ret != DSYNC_IBC_RECV_RET_OK)
@@ -1342,7 +1342,7 @@
 		return -1;
 	}
 
-	memset(&field, 0, sizeof(field));
+	i_zero(&field);
 	value = dsync_deserializer_decode_get(decoder, "name");
 	field.name = p_strdup(ibc->ret_pool, value);
 
--- a/src/doveadm/dsync/dsync-mail.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-mail.c	Wed Jan 11 01:57:46 2017 +0100
@@ -47,7 +47,7 @@
 	input = i_stream_create_lf(hdr_input);
 
 	md5_init(&md5_ctx);
-	memset(&hash_ctx, 0, sizeof(hash_ctx));
+	i_zero(&hash_ctx);
 	while ((sret = i_stream_read_more(input, &data, &size)) > 0) {
 		message_header_hash_more(&hash_ctx, &hash_method_md5, &md5_ctx,
 					 version, data, size);
@@ -68,7 +68,7 @@
 {
 	const char *guid;
 
-	memset(dmail_r, 0, sizeof(*dmail_r));
+	i_zero(dmail_r);
 
 	if (mail_get_special(mail, MAIL_FETCH_GUID, &guid) < 0) {
 		*error_field_r = "GUID";
--- a/src/doveadm/dsync/dsync-mailbox-export.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-mailbox-export.c	Wed Jan 11 01:57:46 2017 +0100
@@ -208,7 +208,7 @@
 		return -1;
 	if (ret == 0) {
 		/* the message was expunged during export */
-		memset(change, 0, sizeof(*change));
+		i_zero(change);
 		change->type = DSYNC_MAIL_CHANGE_TYPE_EXPUNGE;
 		change->uid = mail->uid;
 
@@ -633,7 +633,7 @@
 		}
 
 		attr = &exporter->attr;
-		memset(attr, 0, sizeof(*attr));
+		i_zero(attr);
 		attr->type = exporter->attr_type;
 		attr->value = p_strdup(exporter->pool, value.value);
 		attr->value_stream = value.value_stream;
@@ -907,7 +907,7 @@
 	   return them */
 	guids = array_get(&exporter->expunged_guids, &count);
 	if (exporter->expunged_guid_idx < count) {
-		memset(&exporter->dsync_mail, 0, sizeof(exporter->dsync_mail));
+		i_zero(&exporter->dsync_mail);
 		exporter->dsync_mail.guid =
 			guids[exporter->expunged_guid_idx++];
 		*mail_r = &exporter->dsync_mail;
--- a/src/doveadm/dsync/dsync-mailbox-import.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-mailbox-import.c	Wed Jan 11 01:57:46 2017 +0100
@@ -529,7 +529,7 @@
 	if (ignore)
 		return 0;
 
-	memset(&value, 0, sizeof(value));
+	i_zero(&value);
 	value.value = attr->value;
 	value.value_stream = attr->value_stream;
 	value.last_change = attr->last_change;
@@ -780,13 +780,13 @@
 	int diff;
 	bool remote_saved;
 
-	memset(&m1, 0, sizeof(m1));
+	i_zero(&m1);
 	if (importer->cur_mail != NULL) {
 		m1.guid = importer->mails_have_guids ?
 			importer->cur_guid : importer->cur_hdr_hash;
 		m1.uid = importer->cur_mail->uid;
 	}
-	memset(&m2, 0, sizeof(m2));
+	i_zero(&m2);
 	if (save_change != NULL) {
 		m2.guid = importer->mails_have_guids ?
 			save_change->guid : save_change->hdr_hash;
@@ -2712,7 +2712,7 @@
 	if (ret == 0) {
 		/* update mailbox metadata if we successfully saved
 		   everything. */
-		memset(&update, 0, sizeof(update));
+		i_zero(&update);
 		update.min_next_uid = importer->remote_uid_next;
 		update.min_first_recent_uid =
 			I_MIN(importer->last_common_uid+1,
--- a/src/doveadm/dsync/dsync-mailbox-tree-fill.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-mailbox-tree-fill.c	Wed Jan 11 01:57:46 2017 +0100
@@ -243,7 +243,7 @@
 	const char *change_vname;
 	int ret = 0;
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	guid_128_generate(update.mailbox_guid);
 
 	/* just in case the duplication exists in both sides,
--- a/src/doveadm/dsync/dsync-transaction-log-scan.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/dsync/dsync-transaction-log-scan.c	Wed Jan 11 01:57:46 2017 +0100
@@ -47,7 +47,7 @@
 	} else if (type == DSYNC_MAIL_CHANGE_TYPE_EXPUNGE) {
 		/* expunge overrides flag changes */
 		orig_guid = change->guid;
-		memset(change, 0, sizeof(*change));
+		i_zero(change);
 		change->type = type;
 		change->uid = uid;
 		change->guid = orig_guid;
--- a/src/doveadm/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -125,7 +125,7 @@
 		}
 	}
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.module = "doveadm";
 	input.service = "doveadm";
--- a/src/doveadm/server-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/doveadm/server-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -407,7 +407,7 @@
 	in_port_t port;
 	void *set;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.service = "doveadm";
 
@@ -449,7 +449,7 @@
 	if (conn->server->ssl_ctx == NULL)
 		return 0;
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	ssl_set.verify_remote_cert = TRUE;
 	ssl_set.require_valid_cert = TRUE;
 	ssl_set.verbose_invalid_cert = TRUE;
--- a/src/imap-hibernate/imap-hibernate-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap-hibernate/imap-hibernate-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -49,7 +49,7 @@
 	const char *key, *value;
 	unsigned int peer_dev_major = 0, peer_dev_minor = 0;
 
-	memset(state_r, 0, sizeof(*state_r));
+	i_zero(state_r);
 	if (args[0] == NULL) {
 		*error_r = "Missing username in input";
 		return -1;
--- a/src/imap-login/client-authenticate.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap-login/client-authenticate.c	Wed Jan 11 01:57:46 2017 +0100
@@ -57,7 +57,7 @@
 		*/
 		referral = t_str_new(128);
 
-		memset(&url, 0, sizeof(url));
+		i_zero(&url);
 		url.userid = reply->destuser;
 		url.auth_type = client->auth_mech_name;
 		url.host_name = reply->host;
--- a/src/imap-login/imap-proxy.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap-login/imap-proxy.c	Wed Jan 11 01:57:46 2017 +0100
@@ -114,7 +114,7 @@
 	}
 
 	i_assert(client->common.proxy_sasl_client == NULL);
-	memset(&sasl_set, 0, sizeof(sasl_set));
+	i_zero(&sasl_set);
 	sasl_set.authid = client->common.proxy_master_user != NULL ?
 		client->common.proxy_master_user : client->common.proxy_user;
 	sasl_set.authzid = client->common.proxy_user;
--- a/src/imap-urlauth/imap-urlauth-worker.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap-urlauth/imap-urlauth-worker.c	Wed Jan 11 01:57:46 2017 +0100
@@ -577,7 +577,7 @@
 	}
 
 	/* lookup user */
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "imap-urlauth-worker";
 	input.service = "imap-urlauth-worker";
 	input.username = args[0];
@@ -633,7 +633,7 @@
 		return 0;
 	}
 
-	memset(&config, 0, sizeof(config));
+	i_zero(&config);
 	config.url_host = set->imap_urlauth_host;
 	config.url_port = set->imap_urlauth_port;
 	config.access_user = client->access_user;
--- a/src/imap-urlauth/imap-urlauth.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap-urlauth/imap-urlauth.c	Wed Jan 11 01:57:46 2017 +0100
@@ -189,7 +189,7 @@
 	const char *auth_socket_path = "auth-master";
 	int c;
 
-	memset(&login_set, 0, sizeof(login_set));
+	i_zero(&login_set);
 	login_set.postlogin_timeout_secs = MASTER_POSTLOGIN_TIMEOUT_DEFAULT;
 
 	if (IS_STANDALONE() && getuid() == 0 &&
@@ -219,7 +219,7 @@
 	}
 	master_service_init_log(master_service, "imap-urlauth: ");
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.module = "imap-urlauth";
 	input.service = "imap-urlauth";
--- a/src/imap/cmd-fetch.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/cmd-fetch.c	Wed Jan 11 01:57:46 2017 +0100
@@ -26,7 +26,7 @@
 {
 	struct imap_fetch_init_context init_ctx;
 
-	memset(&init_ctx, 0, sizeof(init_ctx));
+	i_zero(&init_ctx);
 	init_ctx.fetch_ctx = ctx;
 	init_ctx.pool = ctx->ctx_pool;
 	init_ctx.name = name;
@@ -283,7 +283,7 @@
 	}
 
 	if (send_vanished) {
-		memset(&qresync_args, 0, sizeof(qresync_args));
+		i_zero(&qresync_args);
 		if (imap_fetch_send_vanished(client, client->mailbox,
 					     search_args, &qresync_args) < 0) {
 			mail_search_args_unref(&search_args);
--- a/src/imap/cmd-notify.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/cmd-notify.c	Wed Jan 11 01:57:46 2017 +0100
@@ -407,8 +407,8 @@
 	    mailbox_equals(cmd->client->mailbox, info->ns, info->vname))
 		return;
 
-	memset(&items, 0, sizeof(items));
-	memset(&result, 0, sizeof(result));
+	i_zero(&items);
+	i_zero(&result);
 
 	items.status = STATUS_UIDVALIDITY | STATUS_UIDNEXT |
 		STATUS_MESSAGES | STATUS_UNSEEN;
--- a/src/imap/cmd-select.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/cmd-select.c	Wed Jan 11 01:57:46 2017 +0100
@@ -245,7 +245,7 @@
 	search_args->args->value.seqset = ctx->qresync_known_uids;
 	imap_search_add_changed_since(search_args, ctx->qresync_modseq);
 
-	memset(&qresync_args, 0, sizeof(qresync_args));
+	i_zero(&qresync_args);
 	qresync_args.qresync_sample_seqset = &ctx->qresync_sample_seqset;
 	qresync_args.qresync_sample_uidset = &ctx->qresync_sample_uidset;
 
--- a/src/imap/cmd-setmetadata.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/cmd-setmetadata.c	Wed Jan 11 01:57:46 2017 +0100
@@ -132,7 +132,7 @@
 			return 1;
 		}
 
-		memset(&value, 0, sizeof(value));
+		i_zero(&value);
 		value.value_stream = ctx->input;
 		if (imap_metadata_set(ctx->trans, ctx->entry_name, &value) < 0) {
 			/* delay reporting the failure so we'll finish
@@ -167,7 +167,7 @@
 		/* we have the value already */
 		if (ctx->failed)
 			return 1;
-		memset(&value, 0, sizeof(value));
+		i_zero(&value);
 		value.value = imap_arg_as_nstring(entry_value);
 		ret = imap_metadata_set(ctx->trans, entry_name, &value);
 		if (ret < 0) {
--- a/src/imap/cmd-store.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/cmd-store.c	Wed Jan 11 01:57:46 2017 +0100
@@ -152,7 +152,7 @@
 	if (ret <= 0)
 		return ret < 0;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.cmd = cmd;
 	if (!store_parse_args(&ctx, ++args)) {
 		mail_search_args_unref(&search_args);
--- a/src/imap/imap-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -54,7 +54,7 @@
 {
 	struct imap_urlauth_config config;
 
-	memset(&config, 0, sizeof(config));
+	i_zero(&config);
 	config.url_host = client->set->imap_urlauth_host;
 	config.url_port = client->set->imap_urlauth_port;
 	config.socket_path = t_strconcat(client->user->set->base_dir,
--- a/src/imap/imap-commands-util.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-commands-util.c	Wed Jan 11 01:57:46 2017 +0100
@@ -336,7 +336,7 @@
 
 void msgset_generator_init(struct msgset_generator_context *ctx, string_t *str)
 {
-	memset(ctx, 0, sizeof(*ctx));
+	i_zero(ctx);
 	ctx->str = str;
 	ctx->last_uid = (uint32_t)-1;
 }
--- a/src/imap/imap-commands.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-commands.c	Wed Jan 11 01:57:46 2017 +0100
@@ -95,7 +95,7 @@
 {
 	struct command cmd;
 
-	memset(&cmd, 0, sizeof(cmd));
+	i_zero(&cmd);
 	cmd.name = name;
 	cmd.func = func;
 	cmd.flags = flags;
--- a/src/imap/imap-fetch.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-fetch.c	Wed Jan 11 01:57:46 2017 +0100
@@ -70,7 +70,7 @@
 {
 	struct imap_fetch_init_context init_ctx;
 
-	memset(&init_ctx, 0, sizeof(init_ctx));
+	i_zero(&init_ctx);
 	init_ctx.fetch_ctx = ctx;
 	init_ctx.pool = ctx->ctx_pool;
 
@@ -86,7 +86,7 @@
 	struct imap_fetch_init_context init_ctx;
 	const char *str;
 
-	memset(&init_ctx, 0, sizeof(init_ctx));
+	i_zero(&init_ctx);
 	init_ctx.fetch_ctx = imap_fetch_alloc(client, pool);
 	init_ctx.pool = pool;
 	init_ctx.args = list;
@@ -155,7 +155,7 @@
 		}
 	}
 
-	memset(&h, 0, sizeof(h));
+	i_zero(&h);
 	h.handler = handler;
 	h.context = context;
 	h.buffered = (flags & IMAP_FETCH_HANDLER_FLAG_BUFFERED) != 0;
@@ -355,7 +355,7 @@
 	i_assert(!ctx->state.fetching);
 
         imap_fetch_init(ctx);
-        memset(&ctx->state, 0, sizeof(ctx->state));
+        i_zero(&ctx->state);
 
 	if (array_count(&ctx->all_headers) > 0 &&
 	    ((ctx->fetch_data & (MAIL_FETCH_STREAM_HEADER |
--- a/src/imap/imap-master-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-master-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -57,8 +57,8 @@
 	const char *key, *value;
 	unsigned int peer_dev_major = 0, peer_dev_minor = 0;
 
-	memset(input_r, 0, sizeof(*input_r));
-	memset(master_input_r, 0, sizeof(*master_input_r));
+	i_zero(input_r);
+	i_zero(master_input_r);
 	master_input_r->client_input = buffer_create_dynamic(pool, 64);
 	master_input_r->client_output = buffer_create_dynamic(pool, 16);
 	master_input_r->state = buffer_create_dynamic(pool, 512);
--- a/src/imap/imap-notify.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-notify.c	Wed Jan 11 01:57:46 2017 +0100
@@ -52,7 +52,7 @@
 	enum mail_error error;
 	int ret = 1;
 
-	memset(&items, 0, sizeof(items));
+	i_zero(&items);
 	if ((client->enabled_features & MAILBOX_FEATURE_CONDSTORE) != 0)
 		items.status |= STATUS_HIGHESTMODSEQ;
 
--- a/src/imap/imap-state.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-state.c	Wed Jan 11 01:57:46 2017 +0100
@@ -494,7 +494,7 @@
 {
 	const unsigned char *p = data, *end = data + size;
 
-	memset(state_r, 0, sizeof(*state_r));
+	i_zero(state_r);
 	t_array_init(&state_r->recent_uids, 8);
 
 	/* vname */
--- a/src/imap/imap-status.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/imap-status.c	Wed Jan 11 01:57:46 2017 +0100
@@ -19,7 +19,7 @@
 		return -1;
 	}
 
-	memset(items_r, 0, sizeof(*items_r));
+	i_zero(items_r);
 	for (; !IMAP_ARG_IS_EOL(args); args++) {
 		if (!imap_arg_get_atom(args, &item)) {
 			/* list may contain only atoms */
--- a/src/imap/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/imap/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -146,7 +146,7 @@
 
 	i_assert(len > 0);
 
-	memset(input_r, 0, sizeof(*input_r));
+	i_zero(input_r);
 
 	if (data[0] == '1')
 		input_r->send_untagged_capability = TRUE;
@@ -176,7 +176,7 @@
 			i_panic("Couldn't add client input to stream");
 	} else {
 		/* IMAPLOGINTAG environment is compatible with mailfront */
-		memset(&input, 0, sizeof(input));
+		i_zero(&input);
 		input.tag = getenv("IMAPLOGINTAG");
 	}
 
@@ -270,7 +270,7 @@
 	struct mail_storage_service_input input;
 	const char *value, *error, *input_base64;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = input.service = "imap";
 	input.username = username != NULL ? username : getenv("USER");
 	if (input.username == NULL && IS_STANDALONE())
@@ -305,7 +305,7 @@
 	enum mail_auth_request_flags flags;
 	const char *error;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = input.service = "imap";
 	input.local_ip = login_client->auth_req.local_ip;
 	input.remote_ip = login_client->auth_req.remote_ip;
@@ -377,7 +377,7 @@
 	const char *username = NULL, *auth_socket_path = "auth-master";
 	int c;
 
-	memset(&login_set, 0, sizeof(login_set));
+	i_zero(&login_set);
 	login_set.postlogin_timeout_secs = MASTER_POSTLOGIN_TIMEOUT_DEFAULT;
 	login_set.request_auth_token = TRUE;
 
--- a/src/indexer/indexer-worker.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/indexer/indexer-worker.c	Wed Jan 11 01:57:46 2017 +0100
@@ -34,7 +34,7 @@
 		struct master_service_settings_input input;
 		struct master_service_settings_output output;
 
-		memset(&input, 0, sizeof(input));
+		i_zero(&input);
 		input.module = "mail";
 		input.service = "indexer-worker";
 		(void)master_service_settings_read(master_service,
--- a/src/indexer/master-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/indexer/master-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -208,7 +208,7 @@
 		return -1;
 	}
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "mail";
 	input.service = "indexer-worker";
 	input.username = args[0];
--- a/src/lda/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lda/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -310,7 +310,7 @@
 		MASTER_SERVICE_FLAG_DONT_LOG_TO_STDERR,
 		&argc, &argv, "a:d:ef:m:p:r:");
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.session = mail_deliver_session_init();
 	ctx.pool = ctx.session->pool;
 	ctx.dest_mailbox_name = "INBOX";
@@ -399,7 +399,7 @@
 	}
 	master_service_init_finish(master_service);
 
-	memset(&service_input, 0, sizeof(service_input));
+	i_zero(&service_input);
 	service_input.module = "lda";
 	service_input.service = "lda";
 	service_input.username = user;
--- a/src/lib-auth/auth-master.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-auth/auth-master.c	Wed Jan 11 01:57:46 2017 +0100
@@ -488,7 +488,7 @@
 		return 0;
 	}
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.conn = conn;
 	ctx.return_value = -1;
 	ctx.pool = pool;
@@ -527,7 +527,7 @@
 void auth_user_fields_parse(const char *const *fields, pool_t pool,
 			    struct auth_user_reply *reply_r)
 {
-	memset(reply_r, 0, sizeof(*reply_r));
+	i_zero(reply_r);
 	reply_r->uid = (uid_t)-1;
 	reply_r->gid = (gid_t)-1;
 	p_array_init(&reply_r->extra_fields, pool, 64);
@@ -565,7 +565,7 @@
 		return 0;
 	}
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.conn = conn;
 	ctx.return_value = -1;
 	ctx.pool = pool;
@@ -618,7 +618,7 @@
 	struct auth_master_cache_ctx ctx;
 	string_t *str;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.conn = conn;
 
 	conn->reply_callback = auth_cache_flush_reply_callback;
--- a/src/lib-auth/auth-server-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-auth/auth-server-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -38,7 +38,7 @@
 		return -1;
 	}
 
-	memset(&mech_desc, 0, sizeof(mech_desc));
+	i_zero(&mech_desc);
 	mech_desc.name = p_strdup(conn->pool, args[0]);
 
 	if (strcmp(mech_desc.name, "PLAIN") == 0)
--- a/src/lib-dcrypt/dcrypt-gnutls.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dcrypt/dcrypt-gnutls.c	Wed Jan 11 01:57:46 2017 +0100
@@ -258,7 +258,7 @@
 		struct hmac_sha512_ctx ctx;
 		hmac_sha512_set_key(&ctx, password_len, password);
 		PBKDF2(&ctx, hmac_sha512_update, hmac_sha512_digest, 64, rounds, salt_len, salt, result_len, buf);
-		memset(&ctx, 0, sizeof(ctx));
+		i_zero(&ctx);
 	} else {
 		*error_r = "Unsupported algorithm";
 		return -1;
--- a/src/lib-dcrypt/dcrypt.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dcrypt/dcrypt.c	Wed Jan 11 01:57:46 2017 +0100
@@ -25,7 +25,7 @@
 
 	const char *implementation = t_strconcat("dcrypt_",backend,NULL);
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 	if (module_dir_try_load_missing(&dcrypt_module, set->module_dir,
@@ -231,7 +231,7 @@
 bool dcrypt_keypair_generate(struct dcrypt_keypair *pair_r, enum dcrypt_key_type kind, unsigned int bits, const char *curve, const char **error_r)
 {
 	i_assert(dcrypt_vfs != NULL);
-	memset(pair_r, 0, sizeof(*pair_r));
+	i_zero(pair_r);
 	return dcrypt_vfs->generate_keypair(pair_r, kind, bits, curve, error_r);
 }
 
--- a/src/lib-dcrypt/test-crypto.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dcrypt/test-crypto.c	Wed Jan 11 01:57:46 2017 +0100
@@ -638,7 +638,7 @@
 	test_begin("test_get_info_pw_encrypted");
 
 	struct dcrypt_keypair p1;
-	memset(&p1, 0, sizeof(p1));
+	i_zero(&p1);
 	const char *error;
 	bool ret = dcrypt_keypair_generate(&p1, DCRYPT_KEY_EC, 0, "secp521r1", &error);
 	test_assert(ret == TRUE);
--- a/src/lib-dict-extra/dict-fs.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict-extra/dict-fs.c	Wed Jan 11 01:57:46 2017 +0100
@@ -43,7 +43,7 @@
 		fs_args = p+1;
 	}
 
-	memset(&fs_set, 0, sizeof(fs_set));
+	i_zero(&fs_set);
 	fs_set.username = set->username;
 	fs_set.base_dir = set->base_dir;
 	if (fs_init(fs_driver, fs_args, &fs_set, &fs, error_r) < 0)
--- a/src/lib-dict/dict-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict/dict-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -928,7 +928,7 @@
 	struct client_dict *dict = cmd->dict;
 	struct dict_lookup_result result;
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	if (error != NULL) {
 		result.ret = -1;
 		result.error = error;
@@ -1014,7 +1014,7 @@
 {
 	struct client_dict_sync_lookup lookup;
 
-	memset(&lookup, 0, sizeof(lookup));
+	i_zero(&lookup);
 	lookup.ret = -2;
 
 	client_dict_lookup_async(_dict, key, client_dict_lookup_callback, &lookup);
--- a/src/lib-dict/dict-db.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict/dict-db.c	Wed Jan 11 01:57:46 2017 +0100
@@ -48,7 +48,7 @@
 			 const DBT *pkey ATTR_UNUSED,
 			 const DBT *pdata, DBT *skey)
 {
-	memset(skey, 0, sizeof(*skey));
+	i_zero(skey);
 	skey->data = pdata->data;
 	skey->size = pdata->size;
 	return 0;
@@ -267,9 +267,9 @@
 	DBT pkey, pdata, skey;
 	int ret;
 
-	memset(&pkey, 0, sizeof(pkey));
-	memset(&pdata, 0, sizeof(pdata));
-	memset(&skey, 0, sizeof(skey));
+	i_zero(&pkey);
+	i_zero(&pdata);
+	i_zero(&skey);
 
 	if ((ctx->flags & DICT_ITERATE_FLAG_SORT_BY_VALUE) != 0) {
 		while ((ret = ctx->cursor->c_pget(ctx->cursor, &skey,
@@ -417,8 +417,8 @@
 	struct db_dict *dict = (struct db_dict *)_ctx->dict;
 	DBT dkey, ddata;
 
-	memset(&dkey, 0, sizeof(dkey));
-	memset(&ddata, 0, sizeof(ddata));
+	i_zero(&dkey);
+	i_zero(&ddata);
 
 	dkey.data = (char *)key;
 	dkey.size = strlen(key);
@@ -448,7 +448,7 @@
 	struct db_dict *dict = (struct db_dict *)_ctx->dict;
 	DBT dkey;
 
-	memset(&dkey, 0, sizeof(dkey));
+	i_zero(&dkey);
 	dkey.data = (char *)key;
 	dkey.size = strlen(key);
 	
--- a/src/lib-dict/dict-memcached-ascii.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict/dict-memcached-ascii.c	Wed Jan 11 01:57:46 2017 +0100
@@ -627,7 +627,7 @@
 	int ret = 1;
 
 	if (_ctx->changed) {
-		memset(&commit_ctx, 0, sizeof(commit_ctx));
+		i_zero(&commit_ctx);
 		commit_ctx.dict = dict;
 		commit_ctx.memctx = ctx;
 		commit_ctx.callback = callback;
--- a/src/lib-dict/dict-memcached.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict/dict-memcached.c	Wed Jan 11 01:57:46 2017 +0100
@@ -320,7 +320,7 @@
 				       dict->conn.cmd->data,
 				       dict->conn.cmd->used);
 
-			memset(&dict->conn.reply, 0, sizeof(dict->conn.reply));
+			i_zero(&dict->conn.reply);
 			io_loop_run(dict->ioloop);
 		}
 		timeout_remove(&to);
--- a/src/lib-dict/dict-sql-settings.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict/dict-sql-settings.c	Wed Jan 11 01:57:46 2017 +0100
@@ -158,7 +158,7 @@
 			return "Missing fields for pattern variables";
 	}
 	array_append(&ctx->set->maps, &ctx->cur_map, 1);
-	memset(&ctx->cur_map, 0, sizeof(ctx->cur_map));
+	i_zero(&ctx->cur_map);
 	return NULL;
 }
 
@@ -259,7 +259,7 @@
 	if (cache != NULL)
 		return cache->set;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	pool = pool_alloconly_create("dict sql settings", 1024);
 	ctx.pool = pool;
 	ctx.set = p_new(pool, struct dict_sql_settings, 1);
--- a/src/lib-dict/dict-sql.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict/dict-sql.c	Wed Jan 11 01:57:46 2017 +0100
@@ -475,7 +475,7 @@
 {
 	struct dict_lookup_result result;
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	result.ret = sql_result_next_row(sql_result);
 	if (result.ret < 0)
 		result.error = sql_result_get_error(sql_result);
@@ -509,7 +509,7 @@
 		if (sql_lookup_get_query(dict, key, query, &map, &error) < 0) {
 			struct dict_lookup_result result;
 
-			memset(&result, 0, sizeof(result));
+			i_zero(&result);
 			result.ret = -1;
 			result.error = error;
 			callback(&result, context);
@@ -1070,7 +1070,7 @@
 		field.map = map;
 		field.value = value;
 
-		memset(&build, 0, sizeof(build));
+		i_zero(&build);
 		build.dict = dict;
 		t_array_init(&build.fields, 1);
 		array_append(&build.fields, &field, 1);
@@ -1166,7 +1166,7 @@
 		field.map = map;
 		field.value = t_strdup_printf("%lld", diff);
 
-		memset(&build, 0, sizeof(build));
+		i_zero(&build);
 		build.dict = dict;
 		t_array_init(&build.fields, 1);
 		array_append(&build.fields, &field, 1);
@@ -1261,7 +1261,7 @@
 		struct dict_sql_build_query_field *field;
 		const char *query, *error;
 
-		memset(&build, 0, sizeof(build));
+		i_zero(&build);
 		build.dict = dict;
 		t_array_init(&build.fields, 1);
 		build.extra_values = &values;
--- a/src/lib-dict/dict.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dict/dict.c	Wed Jan 11 01:57:46 2017 +0100
@@ -58,7 +58,7 @@
 {
 	struct dict_settings set;
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.value_type = value_type;
 	set.username = username;
 	set.base_dir = base_dir;
@@ -133,7 +133,7 @@
 	if (dict->v.lookup_async == NULL) {
 		struct dict_lookup_result result;
 
-		memset(&result, 0, sizeof(result));
+		i_zero(&result);
 		result.ret = dict_lookup(dict, pool_datastack_create(),
 					 key, &result.value);
 		if (result.ret < 0)
--- a/src/lib-dns/dns-lookup.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-dns/dns-lookup.c	Wed Jan 11 01:57:46 2017 +0100
@@ -71,7 +71,7 @@
 		client->fd = -1;
 	}
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	result.ret = EAI_FAIL;
 	result.error = error;
 
@@ -339,7 +339,7 @@
 	struct dns_lookup_result result;
 	int ret;
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	result.ret = EAI_FAIL;
 
 	if ((ret = dns_client_send_request(client, cmd, &result.error)) <= 0) {
--- a/src/lib-fs/fs-api.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-fs/fs-api.c	Wed Jan 11 01:57:46 2017 +0100
@@ -110,7 +110,7 @@
 	struct module_dir_load_settings mod_set;
 	const struct fs *fs_class;
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.ignore_missing = TRUE;
 
--- a/src/lib-fs/fs-dict.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-fs/fs-dict.c	Wed Jan 11 01:57:46 2017 +0100
@@ -69,7 +69,7 @@
 		return -1;
 	}
 
-	memset(&dict_set, 0, sizeof(dict_set));
+	i_zero(&dict_set);
 	dict_set.username = set->username;
 	dict_set.base_dir = set->base_dir;
 
@@ -243,7 +243,7 @@
 {
 	struct dict_fs_file *file = (struct dict_fs_file *)_file;
 
-	memset(st_r, 0, sizeof(*st_r));
+	i_zero(st_r);
 
 	if (fs_dict_lookup(file) < 0)
 		return -1;
--- a/src/lib-fs/fs-posix.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-fs/fs-posix.c	Wed Jan 11 01:57:46 2017 +0100
@@ -600,7 +600,7 @@
 	struct posix_fs_lock fs_lock, *ret_lock;
 	int ret = -1;
 
-	memset(&fs_lock, 0, sizeof(fs_lock));
+	i_zero(&fs_lock);
 	fs_lock.lock.file = _file;
 
 	switch (fs->lock_method) {
@@ -625,7 +625,7 @@
 #endif
 		break;
 	case FS_POSIX_LOCK_METHOD_DOTLOCK:
-		memset(&dotlock_set, 0, sizeof(dotlock_set));
+		i_zero(&dotlock_set);
 		dotlock_set.stale_timeout = FS_POSIX_DOTLOCK_STALE_TIMEOUT_SECS;
 		dotlock_set.use_excl_lock = TRUE;
 		dotlock_set.timeout = secs;
--- a/src/lib-fs/fs-test-async.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-fs/fs-test-async.c	Wed Jan 11 01:57:46 2017 +0100
@@ -83,7 +83,7 @@
 	struct test_fs *test_fs;
 	const char *error;
 
-	memset(&fs_set, 0, sizeof(fs_set));
+	i_zero(&fs_set);
 	if (fs_init(driver, args, &fs_set, &fs, &error) < 0)
 		i_fatal("fs_init() failed: %s", error);
 
--- a/src/lib-fs/fs-test.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-fs/fs-test.c	Wed Jan 11 01:57:46 2017 +0100
@@ -235,7 +235,7 @@
 		errno = ENOENT;
 		return -1;
 	}
-	memset(st_r, 0, sizeof(*st_r));
+	i_zero(st_r);
 	st_r->st_size = file->contents->used;
 	return 0;
 }
--- a/src/lib-fts/fts-icu.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-fts/fts-icu.c	Wed Jan 11 01:57:46 2017 +0100
@@ -175,7 +175,7 @@
 	UParseError perr;
 	buffer_t *id_utf16_buf = buffer_create_dynamic(pool_datastack_create(), 2 * strlen(id));
 	UChar *id_utf16;
-	memset(&perr, 0, sizeof(perr));
+	i_zero(&perr);
 
 	fts_icu_utf8_to_utf16(id_utf16_buf, id);
 	id_utf16 = (UChar *)str_c(id_utf16_buf);
--- a/src/lib-http/http-auth.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-auth.c	Wed Jan 11 01:57:46 2017 +0100
@@ -96,7 +96,7 @@
 	unsigned int count = 0;
 	int ret;
 
-	memset(&param, 0, sizeof(param));
+	i_zero(&param);
 	while ((ret=http_parse_auth_param
 		(parser, &param.name, &param.value)) > 0) {
 		if (!array_is_created(params))
@@ -149,7 +149,7 @@
 	for (;;) {
 		struct http_auth_challenge chlng;
 
-		memset(&chlng, 0, sizeof(chlng));
+		i_zero(&chlng);
 
 		/* auth-scheme */
 		if ((ret=http_parse_token(&parser, &chlng.scheme)) <= 0) {
@@ -208,7 +208,7 @@
 	   auth-scheme    = token
 	 */
 
-	memset(crdts, 0, sizeof(*crdts));
+	i_zero(crdts);
 
 	/* auth-scheme */
 	if (http_parse_token(&parser, &crdts->scheme) <= 0)
@@ -382,7 +382,7 @@
 	array_foreach(src, sparam) {
 		struct http_auth_param nparam;
 
-		memset(&nparam, 0, sizeof(nparam));
+		i_zero(&nparam);
 		nparam.name = p_strdup(pool, sparam->name);
 		nparam.value = p_strdup(pool, sparam->value);
 
@@ -443,12 +443,12 @@
 void http_auth_basic_challenge_init(struct http_auth_challenge *chlng,
 	const char *realm)
 {
-	memset(chlng, 0, sizeof(*chlng));
+	i_zero(chlng);
 	chlng->scheme = "Basic";
 	if (realm != NULL) {
 		struct http_auth_param param;
 
-		memset(&param, 0, sizeof(param));
+		i_zero(&param);
 		param.name = "realm";
 		param.value = t_strdup(realm);
 
@@ -470,7 +470,7 @@
 	auth = t_strconcat(username, ":", password, NULL);
 	base64_encode(auth, strlen(auth), data);
 
-	memset(crdts, 0, sizeof(*crdts));
+	i_zero(crdts);
 	crdts->scheme = "Basic";
 	crdts->data = str_c(data);
 }
--- a/src/lib-http/http-client-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-client-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1114,7 +1114,7 @@
 	i_assert(conn->tunneling);
 
 	/* claim connection streams */
-	memset(tunnel, 0, sizeof(*tunnel));
+	i_zero(tunnel);
 	tunnel->input = conn->conn.input;
 	tunnel->output = conn->conn.output;
 	tunnel->fd_in = conn->conn.fd_in;
@@ -1165,7 +1165,7 @@
 			http_client_request_ref(req);
 			conn->tunneling = TRUE;
 
-			memset(&response, 0, sizeof(response));
+			i_zero(&response);
 			response.status = 200;
 			response.reason = "OK";
 
@@ -1214,7 +1214,7 @@
 
 	i_assert(conn->client->ssl_ctx != NULL);
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	if (!conn->client->set.ssl_allow_invalid_cert) {
 		ssl_set.verbose_invalid_cert = TRUE;
 		ssl_set.verify_remote_cert = TRUE;
--- a/src/lib-http/http-client-host.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-client-host.c	Wed Jan 11 01:57:46 2017 +0100
@@ -118,7 +118,7 @@
 	} else if (client->set.dns_client_socket_path != NULL) {
 		http_client_host_debug(host,
 			"Performing asynchronous DNS lookup");
-		memset(&dns_set, 0, sizeof(dns_set));
+		i_zero(&dns_set);
 		dns_set.dns_client_socket_path =
 			client->set.dns_client_socket_path;
 		if (client->set.connect_timeout_msecs > 0)
--- a/src/lib-http/http-client-request.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-client-request.c	Wed Jan 11 01:57:46 2017 +0100
@@ -669,7 +669,7 @@
 	/* the IP address may be unassigned in the returned peer address, since
 	   that is only available at this stage when the target URL has an
 	   explicit IP address. */
-	memset(addr, 0, sizeof(*addr));
+	i_zero(addr);
 	if (host_socket != NULL) {
 		addr->type = HTTP_CLIENT_PEER_ADDR_UNIX;
 		addr->a.un.path = host_socket;		
--- a/src/lib-http/http-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -289,7 +289,7 @@
 	if (client->ssl_ctx != NULL)
 		return 0;
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	ssl_set.ca_dir = client->set.ssl_ca_dir;
 	ssl_set.ca_file = client->set.ssl_ca_file;
 	ssl_set.ca = client->set.ssl_ca;
--- a/src/lib-http/http-date.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-date.c	Wed Jan 11 01:57:46 2017 +0100
@@ -434,7 +434,7 @@
 	struct http_date_parser parser;
 	time_t timestamp;
 	
-	memset(&parser, 0, sizeof(parser));
+	i_zero(&parser);
 	parser.cur = data;
 	parser.end = data + size;
 
--- a/src/lib-http/http-message-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-message-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -18,7 +18,7 @@
 	struct istream *input, const struct http_header_limits *hdr_limits,
 	uoff_t max_payload_size, bool lenient)
 {
-	memset(parser, 0, sizeof(*parser));
+	i_zero(parser);
 	parser->input = input;
 	i_stream_ref(parser->input);
 	if (hdr_limits != NULL)
@@ -53,7 +53,7 @@
 
 	if (parser->msg.pool != NULL)
 		pool_unref(&parser->msg.pool);
-	memset(&parser->msg, 0, sizeof(parser->msg));
+	i_zero(&parser->msg);
 	if (pool == NULL) {
 		parser->msg.pool = pool_alloconly_create("http_message", 4096);
 	} else {
--- a/src/lib-http/http-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -74,7 +74,7 @@
 void http_parser_init(struct http_parser *parser,
 			const unsigned char *data, size_t size)
 {
-	memset(parser, 0, sizeof(*parser));
+	i_zero(parser);
 	parser->begin = data;
 	parser->cur = data;
 	parser->end = data + size;
--- a/src/lib-http/http-request-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-request-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -49,7 +49,7 @@
 		hdr_limits = limits->header;
 		max_payload_size = limits->max_payload_size;
 	} else {
-		memset(&hdr_limits, 0, sizeof(hdr_limits));
+		i_zero(&hdr_limits);
 		max_payload_size = 0;
 	}
 
@@ -572,7 +572,7 @@
 		return -1;
 	}
 
-	memset(request, 0, sizeof(*request));
+	i_zero(request);
 
 	if (http_url_request_target_parse(parser->request_target, hdr->value,
 		parser->parser.msg.pool, &request->target, &error) < 0) {
--- a/src/lib-http/http-response-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-response-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -385,7 +385,7 @@
 
 	parser->state = HTTP_RESPONSE_PARSE_STATE_INIT;
 
-	memset(response, 0, sizeof(*response));
+	i_zero(response);
 	response->status = parser->response_status;
 	response->reason = parser->response_reason;
 	response->version_major = parser->parser.msg.version_major;
--- a/src/lib-http/http-response.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-response.c	Wed Jan 11 01:57:46 2017 +0100
@@ -11,7 +11,7 @@
 http_response_init(struct http_response *resp,
 	unsigned int status, const char *reason)
 {
-	memset(resp, 0, sizeof(*resp));
+	i_zero(resp);
 	resp->version_major = 1;
 	resp->version_minor = 1;
 	resp->date = ioloop_time;
--- a/src/lib-http/http-server-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-server-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1219,7 +1219,7 @@
 	/* preserve statistics */
 	http_server_connection_update_stats(conn);
 
-	memset(&tunnel, 0, sizeof(tunnel));
+	i_zero(&tunnel);
 	tunnel.input = conn->conn.input;
 	tunnel.output = conn->conn.output;
 	tunnel.fd_in = conn->conn.fd_in;
--- a/src/lib-http/http-server-response.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-server-response.c	Wed Jan 11 01:57:46 2017 +0100
@@ -59,7 +59,7 @@
 		resp = req->response;
 		i_assert(!resp->submitted);
 		http_server_response_free(resp);
-		memset(resp, 0, sizeof(*resp));
+		i_zero(resp);
 	}
 
 	resp->request = req;
@@ -327,7 +327,7 @@
 	http_server_request_ref(req);
 	resp->payload_blocking = TRUE;
 
-	memset(&rpay, 0, sizeof(rpay));
+	i_zero(&rpay);
 	rpay.resp = resp;
 
 	if (iov == NULL) {
@@ -428,7 +428,7 @@
 
 	i_assert(data != NULL);
 
-	memset(&iov, 0, sizeof(iov));
+	i_zero(&iov);
 	iov.iov_base = data;
 	iov.iov_len = size;
 	ret = http_server_response_output_payload(&resp, &iov, 1);
--- a/src/lib-http/http-url.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/http-url.c	Wed Jan 11 01:57:46 2017 +0100
@@ -392,7 +392,7 @@
 		return 0;
 	}
 
-	memset(&base, 0, sizeof(base));
+	i_zero(&base);
 	base.host_name = host.host_literal;
 	base.host_ip = host.host_ip;
 	base.port = host.port;
@@ -425,7 +425,7 @@
 void http_url_copy_authority(pool_t pool, struct http_url *dest,
 	const struct http_url *src)
 {
-	memset(dest, 0, sizeof(*dest));
+	i_zero(dest);
 	dest->host_name = p_strdup(pool, src->host_name);
 	if (src->have_host_ip) {
 		dest->host_ip = src->host_ip;
--- a/src/lib-http/test-http-auth.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/test-http-auth.c	Wed Jan 11 01:57:46 2017 +0100
@@ -97,7 +97,7 @@
 
 		test_begin(t_strdup_printf("http auth challenges valid [%d]", i));
 
-		memset(&out, 0, sizeof(out));
+		i_zero(&out);
 		result = (http_auth_parse_challenges
 			((const unsigned char *)challenges_in, strlen(challenges_in), 
 				&out) > 0);
--- a/src/lib-http/test-http-client-errors.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/test-http-client-errors.c	Wed Jan 11 01:57:46 2017 +0100
@@ -2493,7 +2493,7 @@
 test_client_defaults(struct http_client_settings *http_set)
 {
 	/* client settings */
-	memset(http_set, 0, sizeof(*http_set));
+	i_zero(http_set);
 	http_set->max_idle_time_msecs = 5*1000;
 	http_set->max_parallel_connections = 1;
 	http_set->max_pipelined_requests = 1;
@@ -2797,7 +2797,7 @@
   }
 
 	/* listen on localhost */
-	memset(&bind_ip, 0, sizeof(bind_ip));
+	i_zero(&bind_ip);
 	bind_ip.family = AF_INET;
 	bind_ip.u.ip4.s_addr = htonl(INADDR_LOOPBACK);	
 
--- a/src/lib-http/test-http-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/test-http-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -351,7 +351,7 @@
 	   the binary in all systems (but is in others! so linking
 	   safe-memset.lo directly causes them to fail.) If safe_memset() isn't
 	   included, libssl-iostream plugin loading fails. */
-	safe_memset(&dns_set, 0, sizeof(dns_set));
+	i_zero_safe(&dns_set);
 	dns_set.dns_client_socket_path = "/var/run/dovecot/dns-client";
 	dns_set.timeout_msecs = 30*1000;
 	dns_set.idle_timeout_msecs = UINT_MAX;
@@ -360,7 +360,7 @@
 	if (dns_client_connect(dns_client, &error) < 0)
 		i_fatal("Couldn't initialize DNS client: %s", error);
 
-	memset(&http_set, 0, sizeof(http_set));
+	i_zero(&http_set);
 	http_set.dns_client = dns_client;
 	http_set.ssl_allow_invalid_cert = TRUE;
 	http_set.ssl_ca_dir = "/etc/ssl/certs"; /* debian */
--- a/src/lib-http/test-http-payload.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/test-http-payload.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1255,13 +1255,13 @@
 	/* download files from blocking server */
 
 	/* server settings */
-	memset(&http_server_set, 0, sizeof(http_server_set));
+	i_zero(&http_server_set);
 	http_server_set.max_pipelined_requests = 0;
 	http_server_set.debug = debug;
 	http_server_set.request_limits.max_payload_size = (uoff_t)-1;
 
 	/* client settings */
-	memset(&http_client_set, 0, sizeof(http_client_set));
+	i_zero(&http_client_set);
 	http_client_set.max_idle_time_msecs = 5*1000;
 	http_client_set.max_parallel_connections = 1;
 	http_client_set.max_pipelined_requests = 1;
@@ -1286,13 +1286,13 @@
 	/* download files from blocking server */
 
 	/* server settings */
-	memset(&http_server_set, 0, sizeof(http_server_set));
+	i_zero(&http_server_set);
 	http_server_set.max_pipelined_requests = 4;
 	http_server_set.debug = debug;
 	http_server_set.request_limits.max_payload_size = (uoff_t)-1;
 
 	/* client settings */
-	memset(&http_client_set, 0, sizeof(http_client_set));
+	i_zero(&http_client_set);
 	http_client_set.max_idle_time_msecs = 5*1000;
 	http_client_set.max_parallel_connections = 1;
 	http_client_set.max_pipelined_requests = 8;
@@ -1317,13 +1317,13 @@
 	/* download files from blocking server */
 
 	/* server settings */
-	memset(&http_server_set, 0, sizeof(http_server_set));
+	i_zero(&http_server_set);
 	http_server_set.max_pipelined_requests = 4;
 	http_server_set.debug = debug;
 	http_server_set.request_limits.max_payload_size = (uoff_t)-1;
 
 	/* client settings */
-	memset(&http_client_set, 0, sizeof(http_client_set));
+	i_zero(&http_client_set);
 	http_client_set.max_idle_time_msecs = 5*1000;
 	http_client_set.max_parallel_connections = 40;
 	http_client_set.max_pipelined_requests = 8;
@@ -1552,7 +1552,7 @@
   }
 
 	/* listen on localhost */
-	memset(&bind_ip, 0, sizeof(bind_ip));
+	i_zero(&bind_ip);
 	bind_ip.family = AF_INET;
 	bind_ip.u.ip4.s_addr = htonl(INADDR_LOOPBACK);
 
--- a/src/lib-http/test-http-response-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/test-http-response-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -104,7 +104,7 @@
 		unsigned int pos, response_text_len;
 		int ret = 0;
 
-		memset(&response, 0, sizeof(response));
+		i_zero(&response);
 		test = &valid_response_parse_tests[i];
 		response_text = test->response;
 		response_text_len = strlen(response_text);
--- a/src/lib-http/test-http-server-errors.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/test-http-server-errors.c	Wed Jan 11 01:57:46 2017 +0100
@@ -541,7 +541,7 @@
 test_server_defaults(struct http_server_settings *http_set)
 {
 	/* server settings */
-	memset(http_set, 0, sizeof(*http_set));
+	i_zero(http_set);
 	http_set->max_client_idle_time_msecs = 5*1000;
 	http_set->max_pipelined_requests = 1;
 	http_set->debug = debug;
@@ -746,7 +746,7 @@
   }
 
 	/* listen on localhost */
-	memset(&bind_ip, 0, sizeof(bind_ip));
+	i_zero(&bind_ip);
 	bind_ip.family = AF_INET;
 	bind_ip.u.ip4.s_addr = htonl(INADDR_LOOPBACK);	
 
--- a/src/lib-http/test-http-server.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-http/test-http-server.c	Wed Jan 11 01:57:46 2017 +0100
@@ -83,7 +83,7 @@
 	struct client *client;
 	struct http_request_limits req_limits;
 
-	memset(&req_limits, 0, sizeof(req_limits));
+	i_zero(&req_limits);
 	req_limits.max_target_length = 4096;
 
 	client = i_new(struct client, 1);
--- a/src/lib-imap-client/imapc-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-client/imapc-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -86,7 +86,7 @@
 		client->set.ssl_ca_file = p_strdup(pool, set->ssl_ca_file);
 		client->set.ssl_verify = set->ssl_verify;
 
-		memset(&ssl_set, 0, sizeof(ssl_set));
+		i_zero(&ssl_set);
 		ssl_set.ca_dir = set->ssl_ca_dir;
 		ssl_set.ca_file = set->ssl_ca_file;
 		ssl_set.verify_remote_cert = set->ssl_verify;
--- a/src/lib-imap-client/imapc-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-client/imapc-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -290,7 +290,7 @@
 
 	/* abort the commands. we'll do it here later so that if the
 	   callback recurses us back here we don't crash */
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 	reply.state = IMAPC_COMMAND_STATE_DISCONNECTED;
 	reply.text_without_resp = reply.text_full =
 		"Disconnected from server";
@@ -328,7 +328,7 @@
 
 	switch (state) {
 	case IMAPC_CONNECTION_STATE_DISCONNECTED:
-		memset(&reply, 0, sizeof(reply));
+		i_zero(&reply);
 		reply.state = IMAPC_COMMAND_STATE_DISCONNECTED;
 		reply.text_full = "Disconnected from server";
 		if (conn->disconnect_reason != NULL) {
@@ -372,7 +372,7 @@
 	}
 	i_free_and_null(literal->temp_path);
 
-	memset(literal, 0, sizeof(*literal));
+	i_zero(literal);
 	literal->fd = -1;
 }
 
@@ -941,7 +941,7 @@
 		return;
 	}
 
-	memset(&sasl_set, 0, sizeof(sasl_set));
+	i_zero(&sasl_set);
 	if (set->master_user == NULL)
 		sasl_set.authid = set->username;
 	else {
@@ -1122,7 +1122,7 @@
 		}
 		imap_args++;
 	}
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 
 	if (strcasecmp(name, "OK") == 0) {
 		if (imapc_connection_handle_imap_resp_text(conn, imap_args,
@@ -1185,7 +1185,7 @@
 			/* continue AUTHENTICATE */
 			struct imapc_command_reply reply;
 
-			memset(&reply, 0, sizeof(reply));
+			i_zero(&reply);
 			reply.state = (enum imapc_command_state)IMAPC_COMMAND_STATE_AUTHENTICATE_CONTINUE;
 			reply.text_full = line;
 			cmds[0]->callback(&reply, cmds[0]->context);
@@ -1287,7 +1287,7 @@
 	/* make sure reply texts stays valid if input stream gets freed */
 	line = t_strdup_noconst(line);
 
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 
 	linep = strchr(line, ' ');
 	if (linep == NULL)
@@ -1516,7 +1516,7 @@
 		return -1;
 	}
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	if (conn->client->set.ssl_verify) {
 		ssl_set.verbose_invalid_cert = TRUE;
 		ssl_set.verify_remote_cert = TRUE;
@@ -1747,7 +1747,7 @@
 			(long)conn->last_connect);
 	}
 
-	memset(&dns_set, 0, sizeof(dns_set));
+	i_zero(&dns_set);
 	dns_set.dns_client_socket_path =
 		conn->client->set.dns_client_socket_path;
 	dns_set.timeout_msecs = conn->client->set.connect_timeout_msecs;
@@ -2031,7 +2031,7 @@
 			return;
 		}
 		/* shouldn't normally happen */
-		memset(&reply, 0, sizeof(reply));
+		i_zero(&reply);
 		reply.text_without_resp = reply.text_full = "Mailbox not open";
 		reply.state = IMAPC_COMMAND_STATE_DISCONNECTED;
 
--- a/src/lib-imap-storage/imap-metadata.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-storage/imap-metadata.c	Wed Jan 11 01:57:46 2017 +0100
@@ -149,7 +149,7 @@
 {
 	struct mail_attribute_value value;
 
-	memset(&value, 0, sizeof(value));
+	i_zero(&value);
 	return imap_metadata_set(imtrans, entry, &value);
 }
 
@@ -159,7 +159,7 @@
 	enum mail_attribute_type type;
 	const char *key;
 
-	memset(value_r, 0, sizeof(*value_r));
+	i_zero(value_r);
 	if (!imap_metadata_entry2key(imtrans, entry, &type, &key))
 		return 0;
 	if (imap_metadata_get_mailbox_transaction(imtrans) < 0)
@@ -173,7 +173,7 @@
 	enum mail_attribute_type type;
 	const char *key;
 
-	memset(value_r, 0, sizeof(*value_r));
+	i_zero(value_r);
 	if (!imap_metadata_entry2key(imtrans, entry, &type, &key))
 		return 0;
 	if (imap_metadata_get_mailbox_transaction(imtrans) < 0)
--- a/src/lib-imap-storage/imap-msgpart-url.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-storage/imap-msgpart-url.c	Wed Jan 11 01:57:46 2017 +0100
@@ -74,7 +74,7 @@
 	const char  *error;
 
 	/* build base url */
-	memset(&base_url, 0, sizeof(base_url));
+	i_zero(&base_url);
 	if (selected_box != NULL) {
 		mailbox_get_open_status(selected_box, STATUS_UIDVALIDITY,
 					&box_status);
--- a/src/lib-imap-storage/imap-msgpart.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-storage/imap-msgpart.c	Wed Jan 11 01:57:46 2017 +0100
@@ -570,9 +570,9 @@
 	struct istream *input = NULL;
 	bool unknown_crlfs = FALSE;
 
-	memset(&hdr_size, 0, sizeof(hdr_size));
-	memset(&body_size, 0, sizeof(body_size));
-	memset(&part_size, 0, sizeof(part_size));
+	i_zero(&hdr_size);
+	i_zero(&body_size);
+	i_zero(&part_size);
 
 	if (*msgpart->section_number != '\0') {
 		/* find the MIME part */
@@ -671,7 +671,7 @@
 	bool include_hdr, binary, use_partial_cache, have_crlfs;
 	int ret;
 
-	memset(result_r, 0, sizeof(*result_r));
+	i_zero(result_r);
 
 	if ((ret = imap_msgpart_find_part(mail, msgpart, &part)) < 0)
 		return -1;
--- a/src/lib-imap-urlauth/imap-urlauth-backend.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-urlauth/imap-urlauth-backend.c	Wed Jan 11 01:57:46 2017 +0100
@@ -47,7 +47,7 @@
 		random_fill(mailbox_key_r, IMAP_URLAUTH_KEY_LEN);
 		mailbox_key_hex = binary_to_hex(mailbox_key_r,
 						IMAP_URLAUTH_KEY_LEN);
-		memset(&urlauth_key, 0, sizeof(urlauth_key));
+		i_zero(&urlauth_key);
 		urlauth_key.value = mailbox_key_hex;
 		ret = mailbox_attribute_set(trans, MAIL_ATTRIBUTE_TYPE_PRIVATE,
 					    IMAP_URLAUTH_KEY, &urlauth_key);
--- a/src/lib-imap-urlauth/imap-urlauth-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-urlauth/imap-urlauth-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -360,7 +360,7 @@
 	callback = urlreq->callback;
 	urlreq->callback = NULL;
 	if (callback != NULL) {
-		memset(&reply, 0, sizeof(reply));
+		i_zero(&reply);
 		reply.url = urlreq->url;
 		reply.flags = urlreq->flags;
 		reply.succeeded = FALSE;
@@ -648,7 +648,7 @@
 	i_assert(conn->literal_bytes_left == 0);
 
 	/* reply */
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 	reply.url = urlreq->url;
 	reply.flags = urlreq->flags;
 	reply.bodypartstruct = urlreq->bodypartstruct;
--- a/src/lib-imap-urlauth/imap-urlauth-fetch.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap-urlauth/imap-urlauth-fetch.c	Wed Jan 11 01:57:46 2017 +0100
@@ -150,7 +150,7 @@
 
 	ufetch->pending_requests--;
 
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 	reply.url = url;
 	reply.flags = url_flags;
 	reply.succeeded = FALSE;
@@ -226,7 +226,7 @@
 	}
 
 	/* if requested, read the message part the URL points to */
-	memset(&mpresult, 0, sizeof(mpresult));
+	i_zero(&mpresult);
 	if (success && ((url_flags & IMAP_URLAUTH_FETCH_FLAG_BODY) != 0 ||
 			(url_flags & IMAP_URLAUTH_FETCH_FLAG_BINARY) != 0)) {
 		ret = imap_msgpart_url_read_part(mpurl, &mpresult, &error);
@@ -263,7 +263,7 @@
 		return;
 	}
 
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 	reply.url = url;
 	reply.flags = url_flags;
 	reply.error = errormsg;
@@ -459,7 +459,7 @@
 
 		ufetch->pending_requests--;
 
-		memset(&reply, 0, sizeof(reply));
+		i_zero(&reply);
 		reply.url = ufetch->pending_reply.url;
 		reply.flags = ufetch->pending_reply.flags;
 		reply.bodypartstruct = ufetch->pending_reply.bodypartstruct;
--- a/src/lib-imap/imap-bodystructure.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap/imap-bodystructure.c	Wed Jan 11 01:57:46 2017 +0100
@@ -250,7 +250,7 @@
 			part_data = part->context;
 			envelope = part_data->envelope;
 
-			memset(part_data, 0, sizeof(*part_data));
+			i_zero(part_data);
 			part_data->pool = pool;
 			part_data->envelope = envelope;
 		}
--- a/src/lib-imap/imap-id.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-imap/imap-id.c	Wed Jan 11 01:57:46 2017 +0100
@@ -22,7 +22,7 @@
 		utsname_set = TRUE;
 		if (uname(&utsname_result) < 0) {
 			i_error("uname() failed: %m");
-			memset(&utsname_result, 0, sizeof(utsname_result));
+			i_zero(&utsname_result);
 		}
 	}
 
--- a/src/lib-index/mail-cache-compress.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-cache-compress.c	Wed Jan 11 01:57:46 2017 +0100
@@ -187,7 +187,7 @@
 	cache_view = mail_cache_view_open(cache, view);
 	output = o_stream_create_fd_file(fd, 0, FALSE);
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.major_version = MAIL_CACHE_MAJOR_VERSION;
 	hdr.minor_version = MAIL_CACHE_MINOR_VERSION;
 	hdr.compat_sizeof_uoff_t = sizeof(uoff_t);
@@ -195,7 +195,7 @@
 	hdr.file_seq = get_next_file_seq(cache);
 	o_stream_nsend(output, &hdr, sizeof(hdr));
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.cache = cache;
 	ctx.buffer = buffer_create_dynamic(default_pool, 4096);
 	ctx.field_seen = buffer_create_dynamic(default_pool, 64);
@@ -264,7 +264,7 @@
 			ctx.field_seen_value++;
 		}
 
-		memset(&cache_rec, 0, sizeof(cache_rec));
+		i_zero(&cache_rec);
 		buffer_append(ctx.buffer, &cache_rec, sizeof(cache_rec));
 
 		mail_cache_lookup_iter_init(cache_view, seq, &iter);
--- a/src/lib-index/mail-cache-fields.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-cache-fields.c	Wed Jan 11 01:57:46 2017 +0100
@@ -377,7 +377,7 @@
 	max_drop_time = cache->index->map->hdr.day_stamp == 0 ? 0 :
 		cache->index->map->hdr.day_stamp - MAIL_CACHE_FIELD_DROP_SECS;
 
-	memset(&field, 0, sizeof(field));
+	i_zero(&field);
 	for (i = 0; i < field_hdr->fields_count; i++) {
 		for (p = names; p != end && *p != '\0'; p++) ;
 		if (p == end || *names == '\0') {
@@ -561,7 +561,7 @@
 	const char *name;
 	uint32_t i;
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.fields_count = cache->file_fields_count;
 	for (i = 0; i < cache->fields_count; i++) {
 		if (CACHE_FIELD_IS_NEWLY_WANTED(cache, i))
--- a/src/lib-index/mail-cache-lookup.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-cache-lookup.c	Wed Jan 11 01:57:46 2017 +0100
@@ -144,7 +144,7 @@
 	if (!view->cache->opened)
 		(void)mail_cache_open_and_verify(view->cache);
 
-	memset(ctx, 0, sizeof(*ctx));
+	i_zero(ctx);
 	ctx->view = view;
 	ctx->seq = seq;
 
@@ -159,7 +159,7 @@
 	}
 	ctx->remap_counter = view->cache->remap_counter;
 
-	memset(&view->loop_track, 0, sizeof(view->loop_track));
+	i_zero(&view->loop_track);
 }
 
 static bool
@@ -210,7 +210,7 @@
 
 		ctx->disk_appends_checked = TRUE;
 		ctx->remap_counter = view->cache->remap_counter;
-		memset(&view->loop_track, 0, sizeof(view->loop_track));
+		i_zero(&view->loop_track);
 	}
 
 	if (ctx->stop)
@@ -541,7 +541,7 @@
 	field_state = buffer_get_modifiable_data(buf, NULL);
 
 	/* lookup the fields */
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.view = view;
 	ctx.pool = *pool_r = pool_alloconly_create(MEMPOOL_GROWING"mail cache headers", 1024);
 	t_array_init(&ctx.lines, 32);
--- a/src/lib-index/mail-cache-transaction.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-cache-transaction.c	Wed Jan 11 01:57:46 2017 +0100
@@ -514,7 +514,7 @@
 		i_array_init(&ctx->cache_data_seq, 64);
 	}
 
-	memset(&new_rec, 0, sizeof(new_rec));
+	i_zero(&new_rec);
 	buffer_append(ctx->cache_data, &new_rec, sizeof(new_rec));
 
 	ctx->prev_seq = 0;
--- a/src/lib-index/mail-index-alloc-cache.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-alloc-cache.c	Wed Jan 11 01:57:46 2017 +0100
@@ -143,7 +143,7 @@
 	/* compare index_dir inodes so we don't break even with symlinks.
 	   if index_dir doesn't exist yet or if using in-memory indexes, just
 	   compare mailbox paths */
-	memset(&st, 0, sizeof(st));
+	i_zero(&st);
 	if (index_dir == NULL) {
 		/* in-memory indexes */
 	} else if (stat(index_dir, &st) < 0) {
--- a/src/lib-index/mail-index-fsck.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-fsck.c	Wed Jan 11 01:57:46 2017 +0100
@@ -222,7 +222,7 @@
 
 	/* add keyword records so we can start appending names directly */
 	rec_pos = dest->used;
-	memset(&new_kw_rec, 0, sizeof(new_kw_rec));
+	i_zero(&new_kw_rec);
 	(void)buffer_append_space_unsafe(dest, keywords_count * sizeof(*kw_rec));
 
 	/* write the actual records and names */
--- a/src/lib-index/mail-index-map-read.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-map-read.c	Wed Jan 11 01:57:46 2017 +0100
@@ -16,7 +16,7 @@
 	if (hdr->base_header_size < sizeof(map->hdr)) {
 		/* header smaller than ours, make a copy so our newer headers
 		   won't have garbage in them */
-		memset(&map->hdr, 0, sizeof(map->hdr));
+		i_zero(&map->hdr);
 		memcpy(&map->hdr, hdr, hdr->base_header_size);
 	} else {
 		map->hdr = *hdr;
--- a/src/lib-index/mail-index-map.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-map.c	Wed Jan 11 01:57:46 2017 +0100
@@ -231,7 +231,7 @@
 {
 	i_assert((sizeof(*hdr) % sizeof(uint64_t)) == 0);
 
-	memset(hdr, 0, sizeof(*hdr));
+	i_zero(hdr);
 
 	hdr->major_version = MAIL_INDEX_MAJOR_VERSION;
 	hdr->minor_version = MAIL_INDEX_MINOR_VERSION;
@@ -253,7 +253,7 @@
 {
 	struct mail_index_map tmp_map;
 
-	memset(&tmp_map, 0, sizeof(tmp_map));
+	i_zero(&tmp_map);
 	mail_index_header_init(index, &tmp_map.hdr);
 	tmp_map.index = index;
 	tmp_map.hdr_base = &tmp_map.hdr;
--- a/src/lib-index/mail-index-modseq.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-modseq.c	Wed Jan 11 01:57:46 2017 +0100
@@ -68,7 +68,7 @@
 		view = mail_index_view_open(index);
 		trans = mail_index_transaction_begin(view, 0);
 
-		memset(&hdr, 0, sizeof(hdr));
+		i_zero(&hdr);
 		hdr.highest_modseq = mail_index_modseq_get_head(index);
 		mail_index_update_header_ext(trans, index->modseq_ext_id,
 					     0, &hdr, sizeof(hdr));
@@ -513,7 +513,7 @@
 	if (old_modseq_hdr->log_seq < log_seq ||
 	    (old_modseq_hdr->log_seq == log_seq &&
 	     old_modseq_hdr->log_offset < log_offset)) {
-		memset(&new_modseq_hdr, 0, sizeof(new_modseq_hdr));
+		i_zero(&new_modseq_hdr);
 		new_modseq_hdr.highest_modseq = highest_modseq;
 		new_modseq_hdr.log_seq = log_seq;
 		new_modseq_hdr.log_offset = log_offset;
--- a/src/lib-index/mail-index-strmap.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-strmap.c	Wed Jan 11 01:57:46 2017 +0100
@@ -508,7 +508,7 @@
 		return 0;
 	}
 
-	memset(ctx, 0, sizeof(*ctx));
+	i_zero(ctx);
 	ret = i_stream_read_data(strmap->input, &data, &size,
 				 sizeof(block_size)-1);
 	if (ret <= 0) {
@@ -657,7 +657,7 @@
 
 	if we detect such a conflict, we can't continue using the
 	strmap index until X has been expunged. */
-	memset(&iter, 0, sizeof(iter));
+	i_zero(&iter);
 	while ((hash_rec = hash2_iterate(ctx->view->hash,
 					 crc32, &iter)) != NULL &&
 	       hash_rec->str_idx != ctx->rec.str_idx) {
@@ -799,7 +799,7 @@
 		 (uid == view->last_added_uid &&
 		  ref_index > view->last_ref_index));
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	rec.uid = uid;
 	rec.ref_index = ref_index;
 	rec.str_idx = view->next_str_idx++;
@@ -826,7 +826,7 @@
 	unsigned int i, dest, count, count2;
 	int ret;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.view = view;
 	ctx.uid_lookup_seq = 1;
 
@@ -977,7 +977,7 @@
 	idx_hdr = mail_index_get_header(view->view);
 
 	/* write header */
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.version = MAIL_INDEX_STRMAP_VERSION;
 	hdr.uid_validity = idx_hdr->uid_validity;
 	o_stream_nsend(output, &hdr, sizeof(hdr));
--- a/src/lib-index/mail-index-sync-ext.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-sync-ext.c	Wed Jan 11 01:57:46 2017 +0100
@@ -23,7 +23,7 @@
 	if (!array_is_created(&ctx->view->map->extensions))
 		return;
 
-	memset(&eh, 0, sizeof(eh));
+	i_zero(&eh);
 	if (array_is_created(&ctx->expunge_handlers))
 		array_clear(&ctx->expunge_handlers);
 	else
@@ -449,13 +449,13 @@
 			return;
 
 		/* make sure it's the expected size */
-		memset(&u, 0, sizeof(u));
+		i_zero(&u);
 		u.hdr_size = rext->hdr_size;
 		u.record_size = rext->record_size;
 		u.record_align = rext->record_align;
 		sync_ext_resize(&u, *ext_map_idx_r, ctx, FALSE);
 	} else {
-		memset(&ext_hdr, 0, sizeof(ext_hdr));
+		i_zero(&ext_hdr);
 		ext_hdr.name_size = strlen(name);
 		ext_hdr.hdr_size = rext->hdr_size;
 		ext_hdr.record_size = rext->record_size;
@@ -523,7 +523,7 @@
 		return -1;
 	}
 
-	memset(&ext_hdr, 0, sizeof(ext_hdr));
+	i_zero(&ext_hdr);
 	ext_hdr.name_size = strlen(name);
 	ext_hdr.reset_id = u->reset_id;
 	ext_hdr.hdr_size = u->hdr_size;
--- a/src/lib-index/mail-index-sync-keywords.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-sync-keywords.c	Wed Jan 11 01:57:46 2017 +0100
@@ -155,7 +155,7 @@
 	}
 
 	/* add the keyword */
-	memset(&kw_rec, 0, sizeof(kw_rec));
+	i_zero(&kw_rec);
 	kw_rec.name_offset = name_offset;
 
 	keyword_len = strlen(keyword_name) + 1;
--- a/src/lib-index/mail-index-sync-update.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-sync-update.c	Wed Jan 11 01:57:46 2017 +0100
@@ -653,7 +653,7 @@
 			ret = -1;
 			break;
 		}
-		memset(&rec, 0, sizeof(rec));
+		i_zero(&rec);
 		memcpy(&rec, data, I_MIN(hdr->size, sizeof(rec)));
 		ret = mail_index_sync_ext_reset(ctx, &rec);
 		break;
@@ -831,7 +831,7 @@
 			      struct mail_index_view *view,
 			      enum mail_index_sync_handler_type type)
 {
-	memset(sync_map_ctx, 0, sizeof(*sync_map_ctx));
+	i_zero(sync_map_ctx);
 	sync_map_ctx->view = view;
 	sync_map_ctx->cur_ext_map_idx = (uint32_t)-1;
 	sync_map_ctx->type = type;
--- a/src/lib-index/mail-index-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -152,7 +152,7 @@
 	const struct mail_index_record *rec;
 	uint32_t seq, messages_count;
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 
 	messages_count = mail_index_view_get_messages_count(ctx->view);
 	for (seq = 1; seq <= messages_count; seq++) {
--- a/src/lib-index/mail-index-transaction-export.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-transaction-export.c	Wed Jan 11 01:57:46 2017 +0100
@@ -57,7 +57,7 @@
 	uint16_t offset;
 	int state = 0;
 
-	memset(&u, 0, sizeof(u));
+	i_zero(&u);
 
 	data = prepend ? t->pre_hdr_change : t->post_hdr_change;
 	mask = prepend ? t->pre_hdr_mask : t->post_hdr_mask;
@@ -200,8 +200,8 @@
 	size_t offset;
 	bool started = FALSE, use_32 = hdr->alloc_size >= 65536;
 
-	memset(&u, 0, sizeof(u));
-	memset(&u32, 0, sizeof(u32));
+	i_zero(&u);
+	i_zero(&u32);
 
 	data = hdr->data;
 	mask = hdr->mask;
@@ -283,7 +283,7 @@
 			ext_count = hdrs_count;
 	}
 
-	memset(&ext_reset, 0, sizeof(ext_reset));
+	i_zero(&ext_reset);
 	buffer_create_from_data(&reset_buf, &ext_reset, sizeof(ext_reset));
 	buffer_set_used_size(&reset_buf, sizeof(ext_reset));
 
@@ -361,7 +361,7 @@
 
 	i_assert(uid_buffer->used > 0);
 
-	memset(&kt_hdr, 0, sizeof(kt_hdr));
+	i_zero(&kt_hdr);
 	kt_hdr.modify_type = modify_type;
 	kt_hdr.name_size = strlen(keyword);
 
@@ -417,7 +417,7 @@
 	enum mail_index_fsync_mask change_mask = 0;
 	struct mail_index_export_context ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.trans = t;
 	ctx.append_ctx = append_ctx;
 
--- a/src/lib-index/mail-index-transaction-update.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-transaction-update.c	Wed Jan 11 01:57:46 2017 +0100
@@ -592,7 +592,7 @@
 	if ((t->flags & MAIL_INDEX_TRANSACTION_FLAG_AVOID_FLAG_UPDATES) != 0)
 		t->drop_unnecessary_flag_updates = TRUE;
 
-	memset(&u, 0, sizeof(u));
+	i_zero(&u);
 	u.uid1 = seq1;
 	u.uid2 = seq2;
 
@@ -740,7 +740,7 @@
 		return;
 
 	old_array = *array;
-	memset(array, 0, sizeof(*array));
+	i_zero(array);
 	mail_index_seq_array_alloc(array, new_record_size);
 
 	/* copy the records' beginnings. leave the end zero-filled. */
@@ -763,7 +763,7 @@
 	struct mail_transaction_ext_intro intro;
 	uint32_t old_record_size = 0, old_record_align, old_header_size;
 
-	memset(&intro, 0, sizeof(intro));
+	i_zero(&intro);
 	rext = array_idx(&t->view->index->extensions, ext_id);
 
 	/* get ext_id from transaction's map if it's there */
@@ -837,7 +837,7 @@
 
 	i_assert(reset_id != 0);
 
-	memset(&reset, 0, sizeof(reset));
+	i_zero(&reset);
 	reset.new_reset_id = reset_id;
 	reset.preserve_data = !clear_data;
 
--- a/src/lib-index/mail-index-transaction-view.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-transaction-view.c	Wed Jan 11 01:57:46 2017 +0100
@@ -419,7 +419,7 @@
 			array_idx(&tview->view.index->extensions, ext_id);
 		struct mail_index_ext_header ext_hdr;
 
-		memset(&ext_hdr, 0, sizeof(ext_hdr));
+		i_zero(&ext_hdr);
 		ext_hdr.hdr_size = rext->hdr_size;
 		ext_hdr.record_size = ext_buf->arr.element_size - sizeof(uint32_t);
 		ext_hdr.record_align = rext->record_align;
--- a/src/lib-index/mail-index-transaction.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-transaction.c	Wed Jan 11 01:57:46 2017 +0100
@@ -266,7 +266,7 @@
 	}
 
 	*_t = NULL;
-	memset(result_r, 0, sizeof(*result_r));
+	i_zero(result_r);
 	if (t->v.commit(t, result_r) < 0)
 		return -1;
 
--- a/src/lib-index/mail-index-view-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-view-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -293,9 +293,9 @@
 		return 0;
 	kw_names = array_idx(&ctx->view->index->keywords, 0);
 
-	memset(&thdr, 0, sizeof(thdr));
+	i_zero(&thdr);
 	thdr.type = MAIL_TRANSACTION_KEYWORD_UPDATE | MAIL_TRANSACTION_EXTERNAL;
-	memset(&kw_up, 0, sizeof(kw_up));
+	i_zero(&kw_up);
 	kw_up.modify_type = MODIFY_ADD;
 	/* add new flags one by one */
 	for (i = 0; i < count; i++) {
@@ -334,7 +334,7 @@
 	old_rec = MAIL_INDEX_REC_AT_SEQ(old_map, old_seq);
 	new_rec = MAIL_INDEX_REC_AT_SEQ(new_map, new_seq);
 
-	memset(&thdr, 0, sizeof(thdr));
+	i_zero(&thdr);
 	if (old_rec->flags != new_rec->flags) {
 		struct mail_transaction_flag_update flag_update;
 
@@ -348,7 +348,7 @@
 			MAIL_TRANSACTION_EXTERNAL;
 		thdr.size = sizeof(flag_update);
 
-		memset(&flag_update, 0, sizeof(flag_update));
+		i_zero(&flag_update);
 		flag_update.uid1 = flag_update.uid2 = new_rec->uid;
 		flag_update.add_flags = new_rec->flags;
 		flag_update.remove_flags = ~new_rec->flags & 0xff;
@@ -367,7 +367,7 @@
 		thdr.size = sizeof(kw_reset);
 
 		/* remove all old flags by resetting them */
-		memset(&kw_reset, 0, sizeof(kw_reset));
+		i_zero(&kw_reset);
 		kw_reset.uid1 = kw_reset.uid2 = new_rec->uid;
 		if (mail_index_sync_record(&ctx->sync_map_ctx, &thdr,
 					   &kw_reset) < 0)
--- a/src/lib-index/mail-index-view.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index-view.c	Wed Jan 11 01:57:46 2017 +0100
@@ -25,7 +25,7 @@
 void mail_index_view_clone(struct mail_index_view *dest,
 			   const struct mail_index_view *src)
 {
-	memset(dest, 0, sizeof(*dest));
+	i_zero(dest);
 	dest->refcount = 1;
 	dest->v = src->v;
 	dest->index = src->index;
--- a/src/lib-index/mail-index.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-index.c	Wed Jan 11 01:57:46 2017 +0100
@@ -169,7 +169,7 @@
 	if (mail_index_ext_lookup(index, name, &ext_id))
 		return ext_id;
 
-	memset(&rext, 0, sizeof(rext));
+	i_zero(&rext);
 	rext.name = p_strdup(index->extension_pool, name);
 	rext.index_idx = array_count(&index->extensions);
 	rext.hdr_size = default_hdr_size;
--- a/src/lib-index/mail-transaction-log-append.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-transaction-log-append.c	Wed Jan 11 01:57:46 2017 +0100
@@ -18,7 +18,7 @@
 	if (size == 0)
 		return;
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.type = type | ctx->trans_flags;
 	if (type == MAIL_TRANSACTION_EXPUNGE ||
 	    type == MAIL_TRANSACTION_EXPUNGE_GUID)
@@ -229,7 +229,7 @@
 	ctx->output = buffer_create_dynamic(default_pool, 1024);
 	ctx->trans_flags = flags;
 
-	memset(&boundary, 0, sizeof(boundary));
+	i_zero(&boundary);
 	mail_transaction_log_append_add(ctx, MAIL_TRANSACTION_BOUNDARY,
 					&boundary, sizeof(boundary));
 
--- a/src/lib-index/mail-transaction-log-file.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-transaction-log-file.c	Wed Jan 11 01:57:46 2017 +0100
@@ -224,7 +224,7 @@
 
 	i_assert(index->indexid != 0);
 
-	memset(hdr, 0, sizeof(*hdr));
+	i_zero(hdr);
 	hdr->major_version = MAIL_TRANSACTION_LOG_MAJOR_VERSION;
 	hdr->minor_version = MAIL_TRANSACTION_LOG_MINOR_VERSION;
 	hdr->hdr_size = sizeof(struct mail_transaction_log_header);
@@ -441,7 +441,7 @@
 
 	i_assert(file->buffer == NULL && file->mmap_base == NULL);
 
-	memset(&file->hdr, 0, sizeof(file->hdr));
+	i_zero(&file->hdr);
 	if (file->last_size < mmap_get_page_size() && file->last_size > 0) {
 		/* just read the entire transaction log to memory.
 		   note that if some of the data hasn't been fully committed
--- a/src/lib-index/mail-transaction-log.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/mail-transaction-log.c	Wed Jan 11 01:57:46 2017 +0100
@@ -605,7 +605,7 @@
 {
 	struct mail_index *index = log->index;
 
-	memset(set_r, 0, sizeof(*set_r));
+	i_zero(set_r);
 	set_r->timeout = I_MIN(MAIL_TRANSACTION_LOG_LOCK_TIMEOUT,
 			       index->max_lock_timeout_secs);
 	set_r->stale_timeout = MAIL_TRANSACTION_LOG_LOCK_CHANGE_TIMEOUT;
--- a/src/lib-index/test-mail-index-map.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/test-mail-index-map.c	Wed Jan 11 01:57:46 2017 +0100
@@ -13,8 +13,8 @@
 	struct mail_index_map map;
 	uint32_t seq, first_uid, last_uid, first_seq, last_seq, max_uid;
 
-	memset(&map, 0, sizeof(map));
-	memset(&rec_map, 0, sizeof(rec_map));
+	i_zero(&map);
+	i_zero(&rec_map);
 	map.rec_map = &rec_map;
 	map.hdr.messages_count = messages_count;
 	map.hdr.record_size = sizeof(struct mail_index_record);
--- a/src/lib-index/test-mail-index-sync-ext.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/test-mail-index-sync-ext.c	Wed Jan 11 01:57:46 2017 +0100
@@ -41,7 +41,7 @@
 
 	test_begin("mail index sync ext atomic inc");
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.view = t_new(struct mail_index_view, 1);
 	ctx.view->map = t_new(struct mail_index_map, 1);
 	ctx.view->map->hdr.next_uid = 2;
@@ -54,7 +54,7 @@
 	ext->record_offset = sizeof(struct mail_index_record);
 	ptr = PTR_OFFSET(ctx.view->map->rec_map->records, ext->record_offset);
 
-	memset(&u, 0, sizeof(u));
+	i_zero(&u);
 	test_assert(mail_index_sync_ext_atomic_inc(&ctx, &u) == -1);
 
 	u.uid = 2;
--- a/src/lib-index/test-mail-index-transaction-finish.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/test-mail-index-transaction-finish.c	Wed Jan 11 01:57:46 2017 +0100
@@ -72,7 +72,7 @@
 	t = t_new(struct mail_index_transaction, 1);
 	t->drop_unnecessary_flag_updates = TRUE;
 
-	memset(&u, 0, sizeof(u));
+	i_zero(&u);
 	u.add_flags = MAIL_SEEN; u.remove_flags = MAIL_DRAFT;
 
 	test_begin(t_strdup_printf("mail index transaction finish flag updates n_so_far=%u", n_so_far));
--- a/src/lib-index/test-mail-transaction-log-view.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-index/test-mail-transaction-log-view.c	Wed Jan 11 01:57:46 2017 +0100
@@ -105,7 +105,7 @@
 	struct mail_transaction_header hdr;
 	size_t size;
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.type = MAIL_TRANSACTION_APPEND | MAIL_TRANSACTION_EXTERNAL;
 	hdr.size = mail_index_uint32_to_offset(sizeof(hdr) + sizeof(*rec));
 
@@ -139,7 +139,7 @@
 	test_transaction_log_file_add(3);
 
 	/* add an append record to the 3rd log file */
-	memset(&append_rec, 0, sizeof(append_rec));
+	i_zero(&append_rec);
 	append_rec.uid = 1;
 
 	last_log_size = sizeof(struct mail_transaction_log_header) +
--- a/src/lib-lda/duplicate.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-lda/duplicate.c	Wed Jan 11 01:57:46 2017 +0100
@@ -297,14 +297,14 @@
 		return;
 	}
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.version = DUPLICATE_VERSION;
 
 	output = o_stream_create_fd_file(file->new_fd, 0, FALSE);
 	o_stream_cork(output);
 	o_stream_nsend(output, &hdr, sizeof(hdr));
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	iter = hash_table_iterate_init(file->hash);
 	while (hash_table_iterate(iter, file->hash, &d, &d)) {
 		rec.stamp = d->time;
--- a/src/lib-lda/mail-deliver.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-lda/mail-deliver.c	Wed Jan 11 01:57:46 2017 +0100
@@ -344,7 +344,7 @@
 	if (default_save)
 		ctx->tried_default_save = TRUE;
 
-	memset(&open_ctx, 0, sizeof(open_ctx));
+	i_zero(&open_ctx);
 	open_ctx.user = ctx->dest_user;
 	open_ctx.lda_mailbox_autocreate = ctx->set->lda_mailbox_autocreate;
 	open_ctx.lda_mailbox_autosubscribe = ctx->set->lda_mailbox_autosubscribe;
--- a/src/lib-lda/smtp-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-lda/smtp-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -276,7 +276,7 @@
 		return -1;
 	}
 
-	memset(&client_set, 0, sizeof(client_set));
+	i_zero(&client_set);
 	client_set.mail_from = smtp_client->return_path == NULL ? "<>" :
 		t_strconcat("<", smtp_client->return_path, ">", NULL);
 	client_set.my_hostname = smtp_client->set->hostname;
--- a/src/lib-ldap/ldap-compare.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-ldap/ldap-compare.c	Wed Jan 11 01:57:46 2017 +0100
@@ -22,7 +22,7 @@
 	ret = ldap_parse_result(conn->conn, message,
 				&result_err, NULL,
 				&result_errmsg, NULL, NULL, 0);
-	memset(&res, 0, sizeof(res));
+	i_zero(&res);
 	res.openldap_ret = ret;
 	if (ret != LDAP_SUCCESS) {
 		res.error_string = t_strdup_printf(
--- a/src/lib-ldap/ldap-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-ldap/ldap-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -212,7 +212,7 @@
 			       int ret, const char *error)
 {
 	struct ldap_result res;
-	memset(&res, 0, sizeof(res));
+	i_zero(&res);
 	res.conn = conn;
 	res.openldap_ret = ret;
 	res.error_string = error;
@@ -228,7 +228,7 @@
 				    struct ldap_op_queue_entry *req)
 {
 	struct ldap_result res;
-	memset(&res, 0, sizeof(res));
+	i_zero(&res);
 	res.conn = conn;
 	res.openldap_ret = LDAP_SUCCESS;
 	if (req->result_callback != NULL)
@@ -282,7 +282,7 @@
 		/* did not succeed */
 		struct ldap_result res;
 
-		memset(&res, 0, sizeof(res));
+		i_zero(&res);
 		res.openldap_ret = ret;
 		if (req->result_callback != NULL)
 			req->result_callback(&res, req->result_callback_ctx);
@@ -417,7 +417,7 @@
 	if (req->msgid > -1)
 		ldap_abandon_ext(req->conn->conn, req->msgid, NULL, NULL);
 
-	memset(&res, 0, sizeof(res));
+	i_zero(&res);
 	res.openldap_ret = LDAP_TIMEOUT;
 	res.error_string = "Aborting LDAP request after timeout";
 	if (req->result_callback != NULL)
@@ -441,7 +441,7 @@
 void ldap_connection_abort_all_requests(struct ldap_connection *conn)
 {
 	struct ldap_result res;
-	memset(&res, 0, sizeof(res));
+	i_zero(&res);
 	res.openldap_ret = LDAP_TIMEOUT;
 	res.error_string = "Aborting LDAP requests due to failure";
 
--- a/src/lib-mail/istream-attachment-extractor.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/istream-attachment-extractor.c	Wed Jan 11 01:57:46 2017 +0100
@@ -139,7 +139,7 @@
 	if (astream->set.want_attachment == NULL)
 		return TRUE;
 
-	memset(&ahdr, 0, sizeof(ahdr));
+	i_zero(&ahdr);
 	ahdr.part = part;
 	ahdr.content_type = astream->part.content_type;
 	ahdr.content_disposition = astream->part.content_disposition;
@@ -462,7 +462,7 @@
 		return -1;
 	}
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info.start_offset = astream->part.start_offset;
 	/* base64_bytes contains how many valid base64 bytes there are so far.
 	   if the base64 ends properly, it'll specify how much of the MIME part
@@ -544,7 +544,7 @@
 	if (part->part_buf != NULL)
 		buffer_free(&part->part_buf);
 
-	memset(part, 0, sizeof(*part));
+	i_zero(part);
 	part->temp_fd = -1;
 	hash_format_reset(astream->set.hash_format);
 }
--- a/src/lib-mail/mbox-from.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/mbox-from.c	Wed Jan 11 01:57:46 2017 +0100
@@ -99,7 +99,7 @@
 	if (msg+29-3-5 > msg_end)
 		return -1;
 
-	memset(&tm, 0, sizeof(tm));
+	i_zero(&tm);
 
 	/* skip weekday */
 	msg += 4;
--- a/src/lib-mail/message-address.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-address.c	Wed Jan 11 01:57:46 2017 +0100
@@ -23,7 +23,7 @@
 	addr = p_new(ctx->pool, struct message_address, 1);
 
 	memcpy(addr, &ctx->addr, sizeof(ctx->addr));
-	memset(&ctx->addr, 0, sizeof(ctx->addr));
+	i_zero(&ctx->addr);
 
 	if (ctx->first_addr == NULL)
 		ctx->first_addr = addr;
@@ -307,7 +307,7 @@
 {
 	struct message_address_parser_context ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 
 	rfc822_parser_init(&ctx.parser, data, size, t_str_new(128));
 	ctx.pool = pool;
--- a/src/lib-mail/message-date.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-date.c	Wed Jan 11 01:57:46 2017 +0100
@@ -121,7 +121,7 @@
 	int ret;
 
 	/* [weekday_name "," ] dd month_name [yy]yy hh:mi[:ss] timezone */
-	memset(&tm, 0, sizeof(tm));
+	i_zero(&tm);
 
         rfc822_skip_lwsp(&ctx->parser);
 
--- a/src/lib-mail/message-header-decode.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-header-decode.c	Wed Jan 11 01:57:46 2017 +0100
@@ -178,7 +178,7 @@
 {
 	struct decode_utf8_context ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.dest = dest;
 	ctx.normalizer = normalizer;
 	message_header_decode(data, size, decode_utf8_callback, &ctx);
--- a/src/lib-mail/message-header-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-header-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -36,7 +36,7 @@
 	i_stream_ref(input);
 
 	if (hdr_size != NULL)
-		memset(hdr_size, 0, sizeof(*hdr_size));
+		i_zero(hdr_size);
 	return ctx;
 }
 
--- a/src/lib-mail/message-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1109,7 +1109,7 @@
 	int ret;
 	bool eof = FALSE, full;
 
-	memset(block_r, 0, sizeof(*block_r));
+	i_zero(block_r);
 
 	while ((ret = ctx->parse_next_block(ctx, block_r)) == 0) {
 		ret = message_parser_read_more(ctx, block_r, &full);
--- a/src/lib-mail/message-part-serialize.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-part-serialize.c	Wed Jan 11 01:57:46 2017 +0100
@@ -250,7 +250,7 @@
 	struct deserialize_context ctx;
         struct message_part *part;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.pool = pool;
 	ctx.data = data;
 	ctx.end = ctx.data + size;
--- a/src/lib-mail/message-search.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-search.c	Wed Jan 11 01:57:46 2017 +0100
@@ -121,7 +121,7 @@
 	struct message_header_line *hdr = raw_block->hdr;
 	struct message_block decoded_block;
 
-	memset(decoded_block_r, 0, sizeof(*decoded_block_r));
+	i_zero(decoded_block_r);
 	decoded_block_r->part = raw_block->part;
 
 	if (raw_block->part != ctx->prev_part) {
--- a/src/lib-mail/message-snippet.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/message-snippet.c	Wed Jan 11 01:57:46 2017 +0100
@@ -103,7 +103,7 @@
 	pool_t pool;
 	int ret;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	pool = pool_alloconly_create("message snippet", 1024);
 	ctx.snippet = snippet;
 	ctx.chars_left = max_snippet_chars;
--- a/src/lib-mail/rfc2231-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/rfc2231-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -52,7 +52,7 @@
 	/* Get a list of all parameters. RFC 2231 uses key*<n>[*]=value pairs,
 	   which we want to merge to a key[*]=value pair. Save them to a
 	   separate array. */
-	memset(&rfc2231_param, 0, sizeof(rfc2231_param));
+	i_zero(&rfc2231_param);
 	t_array_init(&result, 8);
 	t_array_init(&rfc2231_params_arr, 8);
 	while ((ret = rfc822_parse_content_param(ctx, &key, &value)) != 0) {
--- a/src/lib-mail/rfc822-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/rfc822-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -55,7 +55,7 @@
 			const unsigned char *data, size_t size,
 			string_t *last_comment)
 {
-	memset(ctx, 0, sizeof(*ctx));
+	i_zero(ctx);
 	ctx->data = data;
 	ctx->end = data + size;
 	ctx->last_comment = last_comment;
--- a/src/lib-mail/test-istream-attachment.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/test-istream-attachment.c	Wed Jan 11 01:57:46 2017 +0100
@@ -209,7 +209,7 @@
 {
 	const char *error;
 
-	memset(set_r, 0, sizeof(*set_r));
+	i_zero(set_r);
 	set_r->min_size = 1;
 	set_r->drain_parent_input = TRUE;
 	set_r->open_temp_fd = test_open_temp_fd;
--- a/src/lib-mail/test-message-decoder.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/test-message-decoder.c	Wed Jan 11 01:57:46 2017 +0100
@@ -24,14 +24,14 @@
 
 	test_begin("message decoder");
 
-	memset(&part, 0, sizeof(part));
-	memset(&input, 0, sizeof(input));
+	i_zero(&part);
+	i_zero(&input);
 	memset(&output, 0xff, sizeof(output));
 	input.part = &part;
 
 	ctx = message_decoder_init(NULL, 0);
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.name = "Content-Transfer-Encoding";
 	hdr.name_len = strlen(hdr.name);
 	hdr.full_value = (const void *)"quoted-printable";
@@ -91,10 +91,10 @@
 
 	test_begin("message_decoder_current_content_type()");
 
-	memset(&part, 0, sizeof(part));
+	i_zero(&part);
 	part2 = part3 = part;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	memset(&output, 0xff, sizeof(output));
 	input.part = &part;
 
@@ -102,7 +102,7 @@
 	test_assert(message_decoder_current_content_type(ctx) == NULL);
 
 	/* multipart/mixed */
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.name = "Content-Type";
 	hdr.name_len = strlen(hdr.name);
 	hdr.full_value = (const void *)"multipart/mixed; boundary=x";
--- a/src/lib-mail/test-message-header-hash.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/test-message-header-hash.c	Wed Jan 11 01:57:46 2017 +0100
@@ -20,7 +20,7 @@
 
 	test_begin("dsync_mail_hash_more v2");
 	md5_init(&md5_ctx);
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	message_header_hash_more(&ctx, &hash_method_md5, &md5_ctx, 2,
 				 test_input, sizeof(test_input)-1);
 	md5_final(&md5_ctx, md5_input);
@@ -33,7 +33,7 @@
 
 	/* single byte at a time */
 	md5_init(&md5_ctx);
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	for (unsigned int i = 0; i < sizeof(test_input)-1; i++) {
 		message_header_hash_more(&ctx, &hash_method_md5, &md5_ctx, 2,
 					 test_input + i, 1);
--- a/src/lib-mail/test-message-search.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-mail/test-message-search.c	Wed Jan 11 01:57:46 2017 +0100
@@ -22,11 +22,11 @@
 	ctx1 = message_search_init("p\xC3\xA4\xC3\xA4", NULL, 0);
 	ctx2 = message_search_init("p\xC3\xB6\xC3\xB6", NULL, 0);
 
-	memset(&raw_block, 0, sizeof(raw_block));
+	i_zero(&raw_block);
 	raw_block.part = &part;
 
 	/* feed the Content-Type header */
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	hdr.name = "Content-Type"; hdr.name_len = strlen(hdr.name);
 	hdr.value = hdr.full_value = text_plain;
 	hdr.value_len = hdr.full_value_len = sizeof(text_plain)-1;
--- a/src/lib-master/master-auth.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-master/master-auth.c	Wed Jan 11 01:57:46 2017 +0100
@@ -227,7 +227,7 @@
 {
 	struct master_auth_request_params params;
 
-	memset(&params, 0, sizeof(params));
+	i_zero(&params);
 	params.client_fd = fd;
 	params.request = *request;
 	params.data = data;
--- a/src/lib-master/master-login.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-master/master-login.c	Wed Jan 11 01:57:46 2017 +0100
@@ -356,7 +356,7 @@
 	struct master_login_connection *conn = client->conn;
 	struct master_auth_reply reply;
 
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 	reply.tag = client->auth_req.tag;
 	reply.status = errormsg == NULL ? MASTER_AUTH_STATUS_OK :
 		MASTER_AUTH_STATUS_INTERNAL_ERROR;
--- a/src/lib-master/master-service-settings.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-master/master-service-settings.c	Wed Jan 11 01:57:46 2017 +0100
@@ -376,7 +376,7 @@
 	    (service->flags & MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS) != 0)
 		return;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.never_exec = TRUE;
 	fd = master_service_open_config(service, &input, &path, &error);
 	if (fd != -1)
@@ -399,7 +399,7 @@
 	time_t now, timeout;
 	bool use_environment, retry;
 
-	memset(output_r, 0, sizeof(*output_r));
+	i_zero(output_r);
 
 	if (getenv("DOVECONF_ENV") == NULL &&
 	    (service->flags & MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS) == 0) {
@@ -546,7 +546,7 @@
 	struct master_service_settings_input input;
 	struct master_service_settings_output output;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = roots;
 	input.module = service->name;
 	return master_service_settings_read(service, &input, &output, error_r);
--- a/src/lib-master/master-service-ssl.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-master/master-service-ssl.c	Wed Jan 11 01:57:46 2017 +0100
@@ -78,7 +78,7 @@
 
 	set = master_service_ssl_settings_get(service);
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	ssl_set.verbose = set->verbose_ssl;
 	ssl_set.verify_remote_cert = set->ssl_verify_client_cert;
 
@@ -111,7 +111,7 @@
 		return;
 	}
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	ssl_set.protocols = set->ssl_protocols;
 	ssl_set.cipher_list = set->ssl_cipher_list;
 	ssl_set.ca = set->ssl_ca;
--- a/src/lib-master/master-service.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-master/master-service.c	Wed Jan 11 01:57:46 2017 +0100
@@ -904,7 +904,7 @@
 		}
 	}
 
-	memset(&conn, 0, sizeof(conn));
+	i_zero(&conn);
 	conn.listen_fd = l->fd;
 	conn.fd = net_accept(l->fd, &conn.remote_ip, &conn.remote_port);
 	if (conn.fd < 0) {
--- a/src/lib-master/mountpoint-list.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-master/mountpoint-list.c	Wed Jan 11 01:57:46 2017 +0100
@@ -112,7 +112,7 @@
 	unsigned int len;
 	int fd, ret = 0;
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 
 	fd = open(list->state_path, O_RDONLY);
 	if (fd == -1) {
@@ -294,7 +294,7 @@
 	struct mountpoint_iter *iter;
 	const struct mountpoint *mnt;
 
-	memset(&new_rec, 0, sizeof(new_rec));
+	i_zero(&new_rec);
 	new_rec.state = default_state;
 	new_rec.mounted = TRUE;
 
--- a/src/lib-master/test-master-service-settings-cache.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-master/test-master-service-settings-cache.c	Wed Jan 11 01:57:46 2017 +0100
@@ -101,7 +101,7 @@
 	pool_t pool;
 	int ret;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "module";
 	input.service = "service_name";
 
--- a/src/lib-ntlm/ntlm-message.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-ntlm/ntlm-message.c	Wed Jan 11 01:57:46 2017 +0100
@@ -86,7 +86,7 @@
 		const char *data;
 		type = va_arg(args, int);
 
-		memset(&info, 0, sizeof(info));
+		i_zero(&info);
 		write_le16(&info.type, type);
 
 		switch (type) {
@@ -151,7 +151,7 @@
 
 	buf = buffer_create_dynamic(pool, sizeof(struct ntlmssp_challenge));
 
-	memset(&c, 0, sizeof(c));
+	i_zero(&c);
 	write_le64(&c.magic, NTLMSSP_MAGIC);
 	write_le32(&c.type, NTLMSSP_MSG_TYPE2);
 	write_le32(&c.flags, flags);
--- a/src/lib-settings/settings-parser.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-settings/settings-parser.c	Wed Jan 11 01:57:46 2017 +0100
@@ -111,7 +111,7 @@
 	}
 	p_array_init(arr, ctx->set_pool, count + 4);
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info = *def->list_info;
 
 	for (i = 0; i < count; i++) T_BEGIN {
@@ -582,7 +582,7 @@
 	if (change_result != NULL && !array_is_created(change_result))
 		p_array_init(change_result, ctx->set_pool, 5);
 
-	memset(&new_link, 0, sizeof(new_link));
+	i_zero(&new_link);
 	new_link.parent = parent;
 	new_link.info = info;
 	new_link.array = result;
@@ -2002,8 +2002,8 @@
 		return 0;
 	type_offset = def->list_info->type_offset;
 
-	memset(&child_dest_link, 0, sizeof(child_dest_link));
-	memset(&child_src_link, 0, sizeof(child_src_link));
+	i_zero(&child_dest_link);
+	i_zero(&child_src_link);
 
 	child_dest_link.info = child_src_link.info = def->list_info;
 
--- a/src/lib-settings/settings.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-settings/settings.c	Wed Jan 11 01:57:46 2017 +0100
@@ -195,7 +195,7 @@
 		next_section = t_strcut(section, '/');
 	}
 
-	memset(&root, 0, sizeof(root));
+	i_zero(&root);
 	root.path = path;
 	input = &root;
 
--- a/src/lib-smtp/lmtp-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-smtp/lmtp-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -734,7 +734,7 @@
 		return -1;
 	}
 
-	memset(&dns_lookup_set, 0, sizeof(dns_lookup_set));
+	i_zero(&dns_lookup_set);
 	dns_lookup_set.dns_client_socket_path =
 		client->set.dns_client_socket_path;
 	dns_lookup_set.timeout_msecs = LMTP_CLIENT_DNS_LOOKUP_TIMEOUT_MSECS;
@@ -808,7 +808,7 @@
 {
 	struct lmtp_recipient_params params;
 
-	memset(&params, 0, sizeof(params));
+	i_zero(&params);
 	lmtp_client_add_rcpt_params(client, address, &params, rcpt_to_callback,
 				    data_callback, context);
 }
--- a/src/lib-sql/driver-cassandra.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-sql/driver-cassandra.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1195,7 +1195,7 @@
 	struct cassandra_transaction_context *ctx = context;
 	struct sql_commit_result commit_result;
 
-	memset(&commit_result, 0, sizeof(commit_result));
+	i_zero(&commit_result);
 	if (sql_result_next_row(result) < 0) {
 		commit_result.error = sql_result_get_error(result);
 		commit_result.error_type = sql_result_get_error_type(result);
@@ -1213,7 +1213,7 @@
 	enum cassandra_query_type query_type;
 	struct sql_commit_result result;
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	ctx->callback = callback;
 	ctx->context = context;
 
--- a/src/lib-ssl-iostream/iostream-ssl.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-ssl-iostream/iostream-ssl.c	Wed Jan 11 01:57:46 2017 +0100
@@ -30,7 +30,7 @@
 	const char *plugin_name = "ssl_iostream_openssl";
 	struct module_dir_load_settings mod_set;
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.setting_name = "<built-in lib-ssl-iostream lookup>";
 	mod_set.require_init_funcs = TRUE;
--- a/src/lib-storage/index/dbox-common/dbox-save.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-common/dbox-save.c	Wed Jan 11 01:57:46 2017 +0100
@@ -56,7 +56,7 @@
 	i_stream_unref(&crlf_input);
 
 	/* write a dummy header. it'll get rewritten when we're finished */
-	memset(&dbox_msg_hdr, 0, sizeof(dbox_msg_hdr));
+	i_zero(&dbox_msg_hdr);
 	o_stream_cork(ctx->dbox_output);
 	if (o_stream_send(ctx->dbox_output, &dbox_msg_hdr,
 			  sizeof(dbox_msg_hdr)) < 0) {
@@ -141,7 +141,7 @@
 	string_t *str;
 	uoff_t vsize;
 
-	memset(&metadata_hdr, 0, sizeof(metadata_hdr));
+	i_zero(&metadata_hdr);
 	memcpy(metadata_hdr.magic_post, DBOX_MAGIC_POST,
 	       sizeof(metadata_hdr.magic_post));
 	o_stream_nsend(output, &metadata_hdr, sizeof(metadata_hdr));
--- a/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c	Wed Jan 11 01:57:46 2017 +0100
@@ -183,7 +183,7 @@
 	if (mdbox_deleted_mailbox_create_indexes(&mbox->box, NULL, NULL) < 0)
 		return -1;
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	rec.save_date = ioloop_time;
 
 	sync_flags = index_storage_get_sync_flags(&mbox->box);
--- a/src/lib-storage/index/dbox-multi/mdbox-map.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-map.c	Wed Jan 11 01:57:46 2017 +0100
@@ -259,7 +259,7 @@
 	size_t data_size;
 
 	mail_index_get_header_ext(view, map->map_ext_id, &data, &data_size);
-	memset(hdr_r, 0, sizeof(*hdr_r));
+	i_zero(hdr_r);
 	memcpy(hdr_r, data, I_MIN(data_size, sizeof(*hdr_r)));
 }
 
@@ -382,7 +382,7 @@
 	const uint16_t *ref16_p;
 	const void *data;
 
-	memset(rec_r, 0, sizeof(*rec_r));
+	i_zero(rec_r);
 	mail_index_lookup_uid(view, seq, &rec_r->map_uid);
 
 	mail_index_lookup_ext(view, seq, map->map_ext_id, &data, NULL);
@@ -414,7 +414,7 @@
 		return -1;
 	hdr = mail_index_get_header(map->view);
 
-	memset(&msg, 0, sizeof(msg));
+	i_zero(&msg);
 	for (seq = 1; seq <= hdr->messages_count; seq++) {
 		if (mdbox_map_view_lookup_rec(map, map->view, seq, &rec) < 0)
 			return -1;
@@ -1297,7 +1297,7 @@
 		return -1;
 
 	/* append map records to index */
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	ref16 = 1;
 	appends = array_get(&ctx->appends, &count);
 	for (i = 0; i < count; i++) {
@@ -1359,7 +1359,7 @@
 	if (mdbox_map_assign_file_ids(ctx, FALSE, "purging - update uids") < 0)
 		return -1;
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	appends = array_get(&ctx->appends, &appends_count);
 
 	next_uid = mail_index_get_header(ctx->atomic->sync_view)->next_uid;
--- a/src/lib-storage/index/dbox-multi/mdbox-save.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-save.c	Wed Jan 11 01:57:46 2017 +0100
@@ -257,7 +257,7 @@
 
 	mdbox_update_header(mbox, ctx->ctx.trans, NULL);
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	rec.save_date = ioloop_time;
 	mails = array_get(&ctx->mails, &count);
 	for (i = 0; i < count; i++) {
@@ -446,7 +446,7 @@
 		return mail_storage_copy(_ctx, mail);
 	src_mbox = (struct mdbox_mailbox *)mail->box;
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	rec.save_date = ioloop_time;
 	if (mdbox_mail_lookup(src_mbox, mail->transaction->view, mail->seq,
 			      &rec.map_uid) < 0) {
--- a/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c	Wed Jan 11 01:57:46 2017 +0100
@@ -312,7 +312,7 @@
 	unsigned int i, count;
 	uint32_t seq;
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	msgs = array_get_modifiable(&ctx->msgs, &count);
 	for (i = 0; i < count; i++) {
 		if (msgs[i]->map_uid != 0)
@@ -425,7 +425,7 @@
 		mail_index_lookup_ext(view, old_seq, mbox->ext_id,
 				      &data, NULL);
 		if (data == NULL) {
-			memset(&new_dbox_rec, 0, sizeof(new_dbox_rec));
+			i_zero(&new_dbox_rec);
 			map_uid = 0;
 		} else {
 			memcpy(&new_dbox_rec, data, sizeof(new_dbox_rec));
@@ -486,7 +486,7 @@
 	size_t data_size;
 
 	mail_index_get_header_ext(view, hdr_ext_id, &data, &data_size);
-	memset(hdr_r, 0, sizeof(*hdr_r));
+	i_zero(hdr_r);
 	memcpy(hdr_r, data, I_MIN(data_size, sizeof(*hdr_r)));
 	*need_resize_r = data_size < sizeof(*hdr_r);
 }
@@ -501,7 +501,7 @@
 	mdbox_rebuild_get_header(rebuild_ctx->view, mbox->hdr_ext_id,
 				 &hdr, &need_resize);
 	if (rebuild_ctx->backup_view == NULL) {
-		memset(&backup_hdr, 0, sizeof(backup_hdr));
+		i_zero(&backup_hdr);
 		need_resize = TRUE;
 	} else {
 		mdbox_rebuild_get_header(rebuild_ctx->backup_view,
@@ -647,7 +647,7 @@
 	if (mail_index_sync_commit(&msg->sync_ctx) < 0)
 		return -1;
 	mailbox_free(&msg->box);
-	memset(msg, 0, sizeof(*msg));
+	i_zero(msg);
 	return 0;
 }
 
@@ -753,7 +753,7 @@
 	}
 
 	/* add the new message */
-	memset(&dbox_rec, 0, sizeof(dbox_rec));
+	i_zero(&dbox_rec);
 	dbox_rec.map_uid = msg->map_uid;
 	dbox_rec.save_date = ioloop_time;
 	mail_index_append(ctx->prev_msg.trans, ctx->prev_msg.next_uid++, &seq);
@@ -917,7 +917,7 @@
 	mail_index_get_header_ext(ctx->atomic->sync_view,
 				  ctx->storage->map->map_ext_id,
 				  &data, &data_size);
-	memset(&ctx->orig_map_hdr, 0, sizeof(ctx->orig_map_hdr));
+	i_zero(&ctx->orig_map_hdr);
 	memcpy(&ctx->orig_map_hdr, data,
 	       I_MIN(data_size, sizeof(ctx->orig_map_hdr)));
 	ctx->highest_file_id = ctx->orig_map_hdr.highest_file_id;
--- a/src/lib-storage/index/dbox-multi/mdbox-storage.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-multi/mdbox-storage.c	Wed Jan 11 01:57:46 2017 +0100
@@ -215,7 +215,7 @@
 		mdbox_storage_set_corrupted(mbox->storage);
 		return -1;
 	}
-	memset(hdr, 0, sizeof(*hdr));
+	i_zero(hdr);
 	if (data_size > 0)
 		memcpy(hdr, data, I_MIN(data_size, sizeof(*hdr)));
 	*need_resize_r = data_size < sizeof(*hdr);
@@ -230,7 +230,7 @@
 	bool need_resize;
 
 	if (mdbox_read_header(mbox, &hdr, &need_resize) < 0) {
-		memset(&hdr, 0, sizeof(hdr));
+		i_zero(&hdr);
 		need_resize = TRUE;
 	}
 
@@ -399,7 +399,7 @@
 	}
 
 	if (mdbox_read_header(mbox, &hdr, &need_resize) < 0)
-		memset(&hdr, 0, sizeof(hdr));
+		i_zero(&hdr);
 
 	if (guid_128_is_empty(hdr.mailbox_guid)) {
 		/* regenerate it */
--- a/src/lib-storage/index/dbox-single/sdbox-storage.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-single/sdbox-storage.c	Wed Jan 11 01:57:46 2017 +0100
@@ -162,7 +162,7 @@
 		}
 		ret = -1;
 	} else {
-		memset(hdr, 0, sizeof(*hdr));
+		i_zero(hdr);
 		memcpy(hdr, data, I_MIN(data_size, sizeof(*hdr)));
 		if (guid_128_is_empty(hdr->mailbox_guid))
 			ret = -1;
@@ -187,7 +187,7 @@
 	bool need_resize;
 
 	if (sdbox_read_header(mbox, &hdr, TRUE, &need_resize) < 0) {
-		memset(&hdr, 0, sizeof(hdr));
+		i_zero(&hdr);
 		need_resize = TRUE;
 	}
 
@@ -320,7 +320,7 @@
 		mail_index_ext_register(mbox->box.index, "dbox-hdr",
 					sizeof(struct sdbox_index_header), 0, 0);
 	/* set the initialization data in case the mailbox is created */
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	guid_128_generate(hdr.mailbox_guid);
 	mail_index_set_ext_init_data(mbox->box.index, mbox->hdr_ext_id,
 				     &hdr, sizeof(hdr));
@@ -349,7 +349,7 @@
 		/* looks like the mailbox is corrupted */
 		(void)sdbox_sync(mbox, SDBOX_SYNC_FLAG_FORCE);
 		if (sdbox_read_header(mbox, &hdr, TRUE, &need_resize) < 0)
-			memset(&hdr, 0, sizeof(hdr));
+			i_zero(&hdr);
 	}
 
 	if (guid_128_is_empty(hdr.mailbox_guid)) {
--- a/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c	Wed Jan 11 01:57:46 2017 +0100
@@ -142,7 +142,7 @@
 	bool need_resize;
 
 	if (sdbox_read_header(mbox, &hdr, FALSE, &need_resize) < 0)
-		memset(&hdr, 0, sizeof(hdr));
+		i_zero(&hdr);
 	if (guid_128_is_empty(hdr.mailbox_guid))
 		guid_128_generate(hdr.mailbox_guid);
 	if (++hdr.rebuild_count == 0)
--- a/src/lib-storage/index/imapc/imapc-list.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/imapc/imapc-list.c	Wed Jan 11 01:57:46 2017 +0100
@@ -610,7 +610,7 @@
 	struct mailbox_node *node;
 	const char *name;
 
-	memset(&update_ctx, 0, sizeof(update_ctx));
+	i_zero(&update_ctx);
 	update_ctx.iter_ctx = &ctx->ctx;
 	update_ctx.tree_ctx = ctx->tree;
 	update_ctx.glob = ctx->ctx.glob;
--- a/src/lib-storage/index/imapc/imapc-storage.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/imapc/imapc-storage.c	Wed Jan 11 01:57:46 2017 +0100
@@ -116,7 +116,7 @@
 void imapc_simple_context_init(struct imapc_simple_context *sctx,
 			       struct imapc_storage_client *client)
 {
-	memset(sctx, 0, sizeof(*sctx));
+	i_zero(sctx);
 	sctx->client = client;
 	sctx->ret = -2;
 }
@@ -261,7 +261,7 @@
 	struct imapc_client_settings set;
 	string_t *str;
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.host = imapc_set->imapc_host;
 	if (*set.host == '\0') {
 		*error_r = "missing imapc_host";
--- a/src/lib-storage/index/index-attachment.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-attachment.c	Wed Jan 11 01:57:46 2017 +0100
@@ -45,7 +45,7 @@
 	struct mail_save_context *ctx = context;
 	struct mail_attachment_part apart;
 
-	memset(&apart, 0, sizeof(apart));
+	i_zero(&apart);
 	apart.part = hdr->part;
 	apart.content_type = hdr->content_type;
 	apart.content_disposition = hdr->content_disposition;
@@ -168,7 +168,7 @@
 	if (*storage->set->mail_attachment_dir == '\0')
 		return;
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.min_size = storage->set->mail_attachment_min_size;
 	if (hash_format_init(storage->set->mail_attachment_hash,
 			     &set.hash_format, &error) < 0) {
@@ -380,7 +380,7 @@
 		const char *decode_options = args[i+2];
 		const char *path = args[i+3];
 
-		memset(&extref, 0, sizeof(extref));
+		i_zero(&extref);
 		if (str_to_uoff(start_offset_str, &extref.start_offset) < 0 ||
 		    str_to_uoff(size_str, &extref.size) < 0 ||
 		    extref.start_offset < last_voffset ||
--- a/src/lib-storage/index/index-attribute.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-attribute.c	Wed Jan 11 01:57:46 2017 +0100
@@ -119,7 +119,7 @@
 		return -1;
 	}
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.username = storage->user->username;
 	set.base_dir = storage->user->set->base_dir;
 	if (mail_user_get_home(storage->user, &set.home_dir) <= 0)
@@ -229,7 +229,7 @@
 	const char *mailbox_prefix;
 	int ret;
 
-	memset(value_r, 0, sizeof(*value_r));
+	i_zero(value_r);
 
 	if (index_storage_get_dict(t->box, type, &dict, &mailbox_prefix) < 0)
 		return -1;
--- a/src/lib-storage/index/index-mail-binary.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-mail-binary.c	Wed Jan 11 01:57:46 2017 +0100
@@ -252,7 +252,7 @@
 	for (; part != NULL; part = part->next) {
 		binary_parts_update(ctx, part->children, msg_bin_parts);
 
-		memset(&bin_part, 0, sizeof(bin_part));
+		i_zero(&bin_part);
 		/* default to unchanged header */
 		bin_part.binary_hdr_size = part->header_size.virtual_size;
 		bin_part.physical_pos = part->physical_pos;
@@ -370,7 +370,7 @@
 	struct binary_ctx ctx;
 	struct istream *is;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.mail = _mail;
 	t_array_init(&ctx.blocks, 8);
 
--- a/src/lib-storage/index/index-mail-headers.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-mail-headers.c	Wed Jan 11 01:57:46 2017 +0100
@@ -144,7 +144,7 @@
 {
 	struct mail_cache_field header_field;
 
-	memset(&header_field, 0, sizeof(header_field));
+	i_zero(&header_field);
 	header_field.type = MAIL_CACHE_FIELD_HEADER;
 	header_field.decision = decision;
 	T_BEGIN {
@@ -255,7 +255,7 @@
 	}
 	mail->data.header_parser_initialized = TRUE;
 	mail->data.parse_line_num = 0;
-	memset(&mail->data.parse_line, 0, sizeof(mail->data.parse_line));
+	i_zero(&mail->data.parse_line);
 }
 
 static void index_mail_parse_finish_imap_envelope(struct index_mail *mail)
--- a/src/lib-storage/index/index-mail.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-mail.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1551,7 +1551,7 @@
 {
 	struct index_mail_data *data = &mail->data;
 
-	memset(data, 0, sizeof(*data));
+	i_zero(data);
 	p_clear(mail->mail.data_pool);
 
 	data->virtual_size = (uoff_t)-1;
--- a/src/lib-storage/index/index-mailbox-size.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-mailbox-size.c	Wed Jan 11 01:57:46 2017 +0100
@@ -70,7 +70,7 @@
 				size);
 		}
 		update->rebuild = TRUE;
-		memset(&update->vsize_hdr, 0, sizeof(update->vsize_hdr));
+		i_zero(&update->vsize_hdr);
 	}
 }
 
@@ -94,7 +94,7 @@
 		} else {
 			/* some messages have been expunged, rescan */
 		}
-		memset(&update->vsize_hdr, 0, sizeof(update->vsize_hdr));
+		i_zero(&update->vsize_hdr);
 		update->rebuild = TRUE;
 	}
 }
@@ -129,7 +129,7 @@
 		return FALSE;
 
 	perm = mailbox_get_permissions(box);
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.lock_timeout_secs =
 		mail_storage_get_lock_timeout(box->storage, lock_secs);
 	set.lock_method = box->storage->set->parsed_lock_method;
@@ -221,14 +221,14 @@
 	if (update->vsize_hdr.message_count == 0) {
 		mail_storage_set_critical(update->box->storage,
 			"vsize-hdr's message_count shrank below 0");
-		memset(&update->vsize_hdr, 0, sizeof(update->vsize_hdr));
+		i_zero(&update->vsize_hdr);
 		return;
 	}
 	update->vsize_hdr.message_count--;
 	if (update->vsize_hdr.vsize < vsize) {
 		mail_storage_set_critical(update->box->storage,
 			"vsize-hdr's vsize shrank below 0");
-		memset(&update->vsize_hdr, 0, sizeof(update->vsize_hdr));
+		i_zero(&update->vsize_hdr);
 		return;
 	}
 	update->vsize_hdr.vsize -= vsize;
--- a/src/lib-storage/index/index-pop3-uidl.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-pop3-uidl.c	Wed Jan 11 01:57:46 2017 +0100
@@ -11,7 +11,7 @@
 {
 	struct mailbox_index_pop3_uidl uidl;
 
-	memset(&uidl, 0, sizeof(uidl));
+	i_zero(&uidl);
 	uidl.max_uid_with_pop3_uidl = uid;
 
 	mail_index_update_header_ext(trans, box->pop3_uidl_hdr_ext_id,
--- a/src/lib-storage/index/index-rebuild.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-rebuild.c	Wed Jan 11 01:57:46 2017 +0100
@@ -132,7 +132,7 @@
 	}
 
 	/* set highest-modseq */
-	memset(&modseq_hdr, 0, sizeof(modseq_hdr));
+	i_zero(&modseq_hdr);
 	modseq_hdr.highest_modseq = mail_index_modseq_get_highest(ctx->view);
 	if (ctx->backup_view != NULL) {
 		modseq = mail_index_modseq_get_highest(ctx->backup_view);
--- a/src/lib-storage/index/index-search-result.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-search-result.c	Wed Jan 11 01:57:46 2017 +0100
@@ -123,7 +123,7 @@
 
 	/* add a temporary search parameter to limit the search only to
 	   the changed messages */
-	memset(&search_arg, 0, sizeof(search_arg));
+	i_zero(&search_arg);
 	search_arg.type = SEARCH_UIDSET;
 	search_arg.value.seqset = *uids;
 	search_arg.next = result->search_args->args;
@@ -152,7 +152,7 @@
 
 	/* add a temporary search parameter to limit the search only to
 	   the new messages */
-	memset(&search_arg, 0, sizeof(search_arg));
+	i_zero(&search_arg);
 	search_arg.type = SEARCH_SEQSET;
 	t_array_init(&search_arg.value.seqset, 1);
 	seq_range_array_add_range(&search_arg.value.seqset,
--- a/src/lib-storage/index/index-search.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-search.c	Wed Jan 11 01:57:46 2017 +0100
@@ -515,7 +515,7 @@
 		return;
 	}
 
-	memset(&block, 0, sizeof(block));
+	i_zero(&block);
 
 	/* We're searching only for values, so drop header name and middle
 	   parts. We use header searching so that MIME words will be decoded. */
@@ -684,7 +684,7 @@
 	if (!have_headers && !have_body)
 		return -1;
 
-	memset(&hdr_ctx, 0, sizeof(hdr_ctx));
+	i_zero(&hdr_ctx);
 	hdr_ctx.index_ctx = ctx;
 	/* hdr_ctx.imail is different from imail for mails in
 	   virtual mailboxes */
@@ -771,7 +771,7 @@
 		i_stream_seek(input, hdr_size.physical_size);
 	}
 
-	memset(&body_ctx, 0, sizeof(body_ctx));
+	i_zero(&body_ctx);
 	body_ctx.index_ctx = ctx;
 	body_ctx.input = input;
 	(void)mail_get_parts(ctx->cur_mail, &body_ctx.part);
--- a/src/lib-storage/index/index-sort-string.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-sort-string.c	Wed Jan 11 01:57:46 2017 +0100
@@ -144,7 +144,7 @@
 	array_clear(&ctx->zero_nodes);
 	array_clear(&ctx->nonzero_nodes);
 
-	memset(&node, 0, sizeof(node));
+	i_zero(&node);
 	node.wanted = TRUE;
 	seqs = array_get(&ctx->program->seqs, &count);
 	for (i = 0; i < count; i++) {
@@ -226,7 +226,7 @@
 	struct sort_string_context *ctx = program->context;
 	struct mail_sort_node node;
 
-	memset(&node, 0, sizeof(node));
+	i_zero(&node);
 	node.seq = mail->seq;
 	node.wanted = TRUE;
 
@@ -742,7 +742,7 @@
 		else {
 			i_assert(next_seq < seqs[i]);
 			for (seq = next_seq; seq < seqs[i]; seq++) {
-				memset(&node, 0, sizeof(node));
+				i_zero(&node);
 				node.seq = seq;
 				index_sort_node_add(ctx, &node);
 			}
--- a/src/lib-storage/index/index-sort.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-sort.c	Wed Jan 11 01:57:46 2017 +0100
@@ -222,7 +222,7 @@
 
 void index_sort_list_finish(struct mail_search_sort_program *program)
 {
-	memset(&static_node_cmp_context, 0, sizeof(static_node_cmp_context));
+	i_zero(&static_node_cmp_context);
 	static_node_cmp_context.program = program;
 	static_node_cmp_context.mail = program->temp_mail;
 	static_node_cmp_context.reverse =
--- a/src/lib-storage/index/index-storage.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-storage.c	Wed Jan 11 01:57:46 2017 +0100
@@ -46,7 +46,7 @@
 		if (idx != UINT_MAX) {
 			field = *mail_cache_register_get_field(cache, idx);
 		} else if (strncasecmp(name, "hdr.", 4) == 0) {
-			memset(&field, 0, sizeof(field));
+			i_zero(&field);
 			field.name = name;
 			field.type = MAIL_CACHE_FIELD_HEADER;
 		} else {
@@ -424,7 +424,7 @@
 			field = old_fields[j];
 		} else if (strncmp(updates[i].name, "hdr.", 4) == 0) {
 			/* new header */
-			memset(&field, 0, sizeof(field));
+			i_zero(&field);
 			field.name = updates[i].name;
 			field.type = MAIL_CACHE_FIELD_HEADER;
 		} else {
@@ -836,7 +836,7 @@
 	i_free_and_null(ctx->data.guid);
 	i_free_and_null(ctx->data.pop3_uidl);
 	index_attachment_save_free(ctx);
-	memset(&ctx->data, 0, sizeof(ctx->data));
+	i_zero(&ctx->data);
 
 	ctx->unfinished = FALSE;
 }
--- a/src/lib-storage/index/index-sync-changes.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-sync-changes.c	Wed Jan 11 01:57:46 2017 +0100
@@ -44,7 +44,7 @@
 void index_sync_changes_reset(struct index_sync_changes_context *ctx)
 {
 	array_clear(&ctx->syncs);
-	memset(&ctx->sync_rec, 0, sizeof(ctx->sync_rec));
+	i_zero(&ctx->sync_rec);
 }
 
 void index_sync_changes_delete_to(struct index_sync_changes_context *ctx,
@@ -112,7 +112,7 @@
 		}
 
 		if (!mail_index_sync_next(ctx->index_sync_ctx, sync_rec)) {
-			memset(sync_rec, 0, sizeof(*sync_rec));
+			i_zero(sync_rec);
 			break;
 		}
 
@@ -130,7 +130,7 @@
 							  sync_rec->uid1,
 							  sync_rec->uid2,
 							  &seq1, &seq2);
-			memset(sync_rec, 0, sizeof(*sync_rec));
+			i_zero(sync_rec);
 
 			if (seq1 == 0)
 				break;
--- a/src/lib-storage/index/index-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -517,7 +517,7 @@
 		return;
 	}
 
-	memset(&new_rec, 0, sizeof(new_rec));
+	i_zero(&new_rec);
 	new_rec.size = st.st_size & 0xffffffffU;
 	new_rec.mtime = st.st_mtime & 0xffffffffU;
 
--- a/src/lib-storage/index/index-thread-finish.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-thread-finish.c	Wed Jan 11 01:57:46 2017 +0100
@@ -174,7 +174,7 @@
 	struct mail_thread_child_node child;
 	unsigned int count;
 
-	memset(&child, 0, sizeof(child));
+	i_zero(&child);
 	array_clear(sorted_children);
 
 	/* add all child indexes to the array */
@@ -209,7 +209,7 @@
 	const struct mail_thread_child_node *children;
 	uint32_t idx, uid;
 
-	memset(&gather_ctx, 0, sizeof(gather_ctx));
+	i_zero(&gather_ctx);
 	gather_ctx.ctx = ctx;
 
 	roots = array_get_modifiable(&ctx->roots, &count);
@@ -321,7 +321,7 @@
 		   the current message and the message in the subject
 		   table children of the dummy.  Then replace the message
                    in the subject table with the dummy message. */
-		memset(&new_root, 0, sizeof(new_root));
+		i_zero(&new_root);
 		new_root.root_idx1 = array_count(&ctx->roots) + 1;
 		new_root.node.idx = ctx->next_new_root_idx++;
 		new_root.dummy = TRUE;
@@ -466,8 +466,8 @@
 
 	ctx->use_sent_date = FALSE;
 
-	memset(&root, 0, sizeof(root));
-	memset(&child, 0, sizeof(child));
+	i_zero(&root);
+	i_zero(&child);
 
 	/* We may see dummy messages without parents or children. We can't
 	   free them since the nodes are in an array, but they may get reused
--- a/src/lib-storage/index/index-thread.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-thread.c	Wed Jan 11 01:57:46 2017 +0100
@@ -579,7 +579,7 @@
 		mail_thread_deinit(&ctx);
 		return -1;
 	} else {
-		memset(&ctx->added_uids, 0, sizeof(ctx->added_uids));
+		i_zero(&ctx->added_uids);
 		*ctx_r = ctx;
 		return 0;
 	}
--- a/src/lib-storage/index/index-transaction.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/index-transaction.c	Wed Jan 11 01:57:46 2017 +0100
@@ -185,7 +185,7 @@
 	struct mail_index_transaction_commit_result result;
 	int ret = 0;
 
-	memset(changes_r, 0, sizeof(*changes_r));
+	i_zero(changes_r);
 	changes_r->pool = pool_alloconly_create(MEMPOOL_GROWING
 						"transaction changes", 512);
 	p_array_init(&changes_r->saved_uids, changes_r->pool, 32);
--- a/src/lib-storage/index/maildir/maildir-copy.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/maildir/maildir-copy.c	Wed Jan 11 01:57:46 2017 +0100
@@ -80,7 +80,7 @@
 	/* hard link to tmp/ with a newly generated filename and later when we
 	   have uidlist locked, move it to new/cur. */
 	dest_fname = maildir_filename_generate();
-	memset(&do_ctx, 0, sizeof(do_ctx));
+	i_zero(&do_ctx);
 	do_ctx.dest_path =
 		t_strdup_printf("%s/tmp/%s", mailbox_get_path(&dest_mbox->box),
 				dest_fname);
--- a/src/lib-storage/index/maildir/maildir-mail.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/maildir/maildir-mail.c	Wed Jan 11 01:57:46 2017 +0100
@@ -722,7 +722,7 @@
 	if (strchr(fname, MAILDIR_EXTRA_SEP) == NULL)
 		return;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.physical_size = (uoff_t)-1;
 	if (field == MAIL_FETCH_VIRTUAL_SIZE &&
 	    maildir_filename_get_size(fname, MAILDIR_EXTRA_VIRTUAL_SIZE,
--- a/src/lib-storage/index/maildir/maildir-sync-index.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/maildir/maildir-sync-index.c	Wed Jan 11 01:57:46 2017 +0100
@@ -485,7 +485,7 @@
 		mailbox_recent_flags_reset(&mbox->box);
 
 		first_uid = hdr->messages_count + 1;
-		memset(&empty_hdr, 0, sizeof(empty_hdr));
+		i_zero(&empty_hdr);
 		empty_hdr.next_uid = 1;
 		hdr = &empty_hdr;
 	}
@@ -786,7 +786,7 @@
 		return;
 	old_rec = data;
 
-	memset(&new_rec, 0, sizeof(new_rec));
+	i_zero(&new_rec);
 	if (mhdr->new_check_time <= mhdr->new_mtime + MAILDIR_SYNC_SECS ||
 	    mhdr->cur_check_time <= mhdr->cur_mtime + MAILDIR_SYNC_SECS) {
 		/* dirty, we need a refresh next time */
--- a/src/lib-storage/index/maildir/maildir-uidlist.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1990,7 +1990,7 @@
 
 	hash_table_destroy(&uidlist->files);
 	uidlist->files = ctx->files;
-	memset(&ctx->files, 0, sizeof(ctx->files));
+	i_zero(&ctx->files);
 
 	if (uidlist->record_pool != NULL)
 		pool_unref(&uidlist->record_pool);
--- a/src/lib-storage/index/mbox/mbox-lock.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/mbox/mbox-lock.c	Wed Jan 11 01:57:46 2017 +0100
@@ -412,7 +412,7 @@
 
         ctx->dotlock_last_stale = TRUE;
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.use_excl_lock = mbox->storage->storage.set->dotlock_use_excl;
 	set.nfs_flush = mbox->storage->storage.set->mail_nfs_storage;
 	set.timeout = mail_storage_get_lock_timeout(&mbox->storage->storage,
@@ -607,7 +607,7 @@
 	if (lock_type == F_UNLCK && ctx->mbox->mbox_fd == -1)
 		return 1;
 
-	memset(&fl, 0, sizeof(fl));
+	i_zero(&fl);
 	fl.l_type = lock_type;
 	fl.l_whence = SEEK_SET;
 	fl.l_start = 0;
@@ -724,7 +724,7 @@
 		mail_storage_get_lock_timeout(&mbox->storage->storage,
 			mbox->storage->set->mbox_lock_timeout);
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.mbox = mbox;
 
 	if (mbox->mbox_lock_type == F_WRLCK) {
@@ -874,7 +874,7 @@
 	if (mbox->mbox_stream != NULL)
 		istream_raw_mbox_set_unlocked(mbox->mbox_stream);
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.mbox = mbox;
 
 	for (i = 0; i < MBOX_LOCK_COUNT; i++)
--- a/src/lib-storage/index/mbox/mbox-save.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/mbox/mbox-save.c	Wed Jan 11 01:57:46 2017 +0100
@@ -647,7 +647,7 @@
 		if (ctx->x_delivery_id_header != NULL) {
 			struct message_header_line hdr;
 
-			memset(&hdr, 0, sizeof(hdr));
+			i_zero(&hdr);
 			hdr.name = ctx->x_delivery_id_header;
 			hdr.name_len = sizeof("X-Delivery-ID")-1;
 			hdr.middle = (const unsigned char *)hdr.name +
--- a/src/lib-storage/index/mbox/mbox-sync-list-index.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/mbox/mbox-sync-list-index.c	Wed Jan 11 01:57:46 2017 +0100
@@ -83,7 +83,7 @@
 		return;
 	old_rec = data;
 
-	memset(&new_rec, 0, sizeof(new_rec));
+	i_zero(&new_rec);
 	new_rec.mtime = mhdr->sync_mtime;
 	new_rec.size = mhdr->sync_size & 0xffffffffU;
 
--- a/src/lib-storage/index/mbox/mbox-sync-parse.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/mbox/mbox-sync-parse.c	Wed Jan 11 01:57:46 2017 +0100
@@ -572,7 +572,7 @@
 	   exists. */
 
 	mail_index_lookup_uid(view, seq, &uid);
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
         mbox_md5_ctx = mbox->md5_v.init();
 
 	hdr_ctx = message_parse_header_init(mbox->mbox_stream, NULL, 0);
--- a/src/lib-storage/index/mbox/mbox-sync-rewrite.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/mbox/mbox-sync-rewrite.c	Wed Jan 11 01:57:46 2017 +0100
@@ -327,7 +327,7 @@
 	unsigned int first_mail_expunge_extra;
 	uint32_t orig_next_uid;
 
-	memset(mail_ctx, 0, sizeof(*mail_ctx));
+	i_zero(mail_ctx);
 	mail_ctx->sync_ctx = sync_ctx;
 	mail_ctx->seq = seq;
 	mail_ctx->header = sync_ctx->header;
--- a/src/lib-storage/index/mbox/mbox-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/mbox/mbox-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -138,7 +138,7 @@
 		return 0;
 
 	p_clear(sync_ctx->mail_keyword_pool);
-	memset(mail_ctx, 0, sizeof(*mail_ctx));
+	i_zero(mail_ctx);
 	mail_ctx->sync_ctx = sync_ctx;
 	mail_ctx->seq = ++sync_ctx->seq;
 	mail_ctx->header = sync_ctx->header;
@@ -719,7 +719,7 @@
 			i_assert(postlf_from_offset != (uoff_t)-1);
 			mail_ctx->mail.from_offset = postlf_from_offset;
 
-			memset(&mail, 0, sizeof(mail));
+			i_zero(&mail);
 			mail.expunged = TRUE;
 			mail.offset = mail.from_offset =
 				mail_ctx->mail.from_offset -
@@ -815,7 +815,7 @@
 
 	/* mail_ctx may contain wrong data after rewrite, so make sure we
 	   don't try to access it */
-	memset(mail_ctx, 0, sizeof(*mail_ctx));
+	i_zero(mail_ctx);
 
 	sync_ctx->need_space_seq = 0;
 	sync_ctx->space_diff = 0;
@@ -1699,7 +1699,7 @@
 				  &data, &data_size);
 	if (data_size == 0) {
 		/* doesn't exist yet. */
-		memset(&mbox->mbox_hdr, 0, sizeof(mbox->mbox_hdr));
+		i_zero(&mbox->mbox_hdr);
 		return 0;
 	}
 
@@ -1902,7 +1902,7 @@
 		return 0;
 	}
 
-	memset(&sync_ctx, 0, sizeof(sync_ctx));
+	i_zero(&sync_ctx);
 	sync_ctx.mbox = mbox;
 	sync_ctx.keep_recent =
 		(mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) == 0;
--- a/src/lib-storage/index/pop3c/pop3c-client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/pop3c/pop3c-client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -120,7 +120,7 @@
 		client->set.ssl_ca_file = p_strdup(pool, set->ssl_ca_file);
 		client->set.ssl_verify = set->ssl_verify;
 
-		memset(&ssl_set, 0, sizeof(ssl_set));
+		i_zero(&ssl_set);
 		ssl_set.ca_dir = set->ssl_ca_dir;
 		ssl_set.ca_file = set->ssl_ca_file;
 		ssl_set.verify_remote_cert = set->ssl_verify;
@@ -281,7 +281,7 @@
 		client->ip = ips[0];
 		pop3c_client_connect_ip(client);
 	} else {
-		memset(&dns_set, 0, sizeof(dns_set));
+		i_zero(&dns_set);
 		dns_set.dns_client_socket_path =
 			client->set.dns_client_socket_path;
 		dns_set.timeout_msecs = POP3C_DNS_LOOKUP_TIMEOUT_MSECS;
@@ -566,7 +566,7 @@
 		return -1;
 	}
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
+	i_zero(&ssl_set);
 	if (client->set.ssl_verify) {
 		ssl_set.verbose_invalid_cert = TRUE;
 		ssl_set.verify_remote_cert = TRUE;
@@ -804,7 +804,7 @@
 {
 	struct pop3c_client_sync_cmd_ctx ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	pop3c_client_cmd_line_async(client, cmdline, pop3c_client_cmd_reply, &ctx);
 	while (ctx.reply == NULL)
 		pop3c_client_wait_one(client);
@@ -876,7 +876,7 @@
 		return -1;
 	}
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	*input_r = pop3c_client_cmd_stream_async(client, cmdline,
 						 pop3c_client_cmd_reply, &ctx);
 	while (ctx.reply == NULL)
--- a/src/lib-storage/index/pop3c/pop3c-storage.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/pop3c/pop3c-storage.c	Wed Jan 11 01:57:46 2017 +0100
@@ -56,7 +56,7 @@
 	struct pop3c_client_settings client_set;
 	string_t *str;
 
-	memset(&client_set, 0, sizeof(client_set));
+	i_zero(&client_set);
 	client_set.host = set->pop3c_host;
 	client_set.port = set->pop3c_port;
 	client_set.username = set->pop3c_user;
--- a/src/lib-storage/index/pop3c/pop3c-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/index/pop3c/pop3c-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -144,7 +144,7 @@
 	struct pop3c_sync_msg msg;
 	uint32_t seq;
 
-	memset(&msg, 0, sizeof(msg));
+	i_zero(&msg);
 	for (seq = 1; seq <= messages_count; seq++) {
 		str_truncate(str, 0);
 		if (mail_cache_lookup_field(cache_view, str, seq,
--- a/src/lib-storage/list/mailbox-list-index-backend.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-index-backend.c	Wed Jan 11 01:57:46 2017 +0100
@@ -358,7 +358,7 @@
 		/* if no GUID is requested, generate it ourself. set
 		   UIDVALIDITY to index sometimes later. */
 		if (update == NULL)
-			memset(&new_update, 0, sizeof(new_update));
+			i_zero(&new_update);
 		else
 			new_update = *update;
 		if (guid_128_is_empty(new_update.mailbox_guid))
--- a/src/lib-storage/list/mailbox-list-index-notify.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-index-notify.c	Wed Jan 11 01:57:46 2017 +0100
@@ -172,7 +172,7 @@
 	}
 
 	/* get GUID */
-	memset(status_r, 0, sizeof(*status_r));
+	i_zero(status_r);
 	memset(guid_r, 0, GUID_128_SIZE);
 	(void)mailbox_list_index_status(inotify->notify.list, view, seq,
 					items, status_r, guid_r, NULL);
@@ -573,7 +573,7 @@
 	const char *storage_name;
 	char ns_sep = mailbox_list_get_hierarchy_sep(inotify->notify.list);
 
-	memset(rec, 0, sizeof(*rec));
+	i_zero(rec);
 	index_node = notify_lookup_guid(inotify, view, uid,
 					items, status_r, rec->guid);
 	if (index_node == NULL)
@@ -625,7 +625,7 @@
 	struct mailbox_list_notify_rec *rec = &inotify->notify_rec;
 	const char *const *vnamep;
 
-	memset(rec, 0, sizeof(*rec));
+	i_zero(rec);
 	vnamep = array_idx(&inotify->new_subscriptions, idx);
 	rec->vname = *vnamep;
 	rec->storage_name = mailbox_list_get_storage_name(inotify->notify.list,
@@ -641,7 +641,7 @@
 	struct mailbox_list_notify_rec *rec = &inotify->notify_rec;
 	const char *const *vnamep;
 
-	memset(rec, 0, sizeof(*rec));
+	i_zero(rec);
 	vnamep = array_idx(&inotify->new_unsubscriptions, idx);
 	rec->vname = *vnamep;
 	rec->storage_name = mailbox_list_get_storage_name(inotify->notify.list,
@@ -698,7 +698,7 @@
 						rec->storage_name);
 	if (nnode == NULL) {
 		/* mailbox didn't exist earlier - report all events as new */
-		memset(&empty_node, 0, sizeof(empty_node));
+		i_zero(&empty_node);
 		nnode = &empty_node;
 	}
 	if (nnode->uidvalidity != status.uidvalidity)
@@ -791,7 +791,7 @@
 	}
 	if (inotify->inbox_event_pending) {
 		inotify->inbox_event_pending = FALSE;
-		memset(&inotify->notify_rec, 0, sizeof(inotify->notify_rec));
+		i_zero(&inotify->notify_rec);
 		inotify->notify_rec.vname = "INBOX";
 		inotify->notify_rec.storage_name = "INBOX";
 		/* Don't bother trying to figure out which event exactly this
--- a/src/lib-storage/list/mailbox-list-index-status.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-index-status.c	Wed Jan 11 01:57:46 2017 +0100
@@ -292,7 +292,7 @@
 	uint32_t seq;
 	int ret;
 
-	memset(first_saved_r, 0, sizeof(*first_saved_r));
+	i_zero(first_saved_r);
 
 	if ((ret = index_list_open_view(box, TRUE, &view, &seq)) <= 0)
 		return ret;
@@ -407,7 +407,7 @@
 	struct mailbox_metadata metadata;
 	uint32_t seq1, seq2;
 
-	memset(changes_r, 0, sizeof(*changes_r));
+	i_zero(changes_r);
 
 	node = mailbox_list_index_lookup(box->list, box->name);
 	if (node == NULL)
@@ -460,7 +460,7 @@
 	mail_index_lookup_ext(list_view, changes->seq,
 			      ilist->first_saved_ext_id, &data, &expunged);
 	if (data == NULL)
-		memset(&first_saved, 0, sizeof(first_saved));
+		i_zero(&first_saved);
 	else
 		memcpy(&first_saved, data, sizeof(first_saved));
 	if (mail_index_view_get_messages_count(box->view) > 0)
@@ -484,8 +484,8 @@
 	struct mailbox_index_vsize old_vsize;
 	guid_128_t old_guid;
 
-	memset(&old_status, 0, sizeof(old_status));
-	memset(&old_vsize, 0, sizeof(old_vsize));
+	i_zero(&old_status);
+	i_zero(&old_vsize);
 	memset(old_guid, 0, sizeof(old_guid));
 	(void)mailbox_list_index_status(box->list, list_view, changes->seq,
 					CACHED_STATUS_ITEMS,
@@ -537,7 +537,7 @@
 	time_t save_date;
 	int ret = 0;
 
-	memset(&first_saved, 0, sizeof(first_saved));
+	i_zero(&first_saved);
 	first_saved.timestamp = (uint32_t)-1;
 
 	if (changes->first_uid != 0) {
@@ -595,7 +595,7 @@
 	if (changes->msgs_changed) {
 		struct mailbox_list_index_msgs_record msgs;
 
-		memset(&msgs, 0, sizeof(msgs));
+		i_zero(&msgs);
 		msgs.messages = changes->status.messages;
 		msgs.unseen = changes->status.unseen;
 		msgs.recent = changes->status.recent;
@@ -712,7 +712,7 @@
 	bool guid_changed = FALSE;
 	int ret;
 
-	memset(&changes, 0, sizeof(changes));
+	i_zero(&changes);
 	if ((ret = index_list_open_view(box, TRUE, &list_view, &changes.seq)) <= 0)
 		return;
 
--- a/src/lib-storage/list/mailbox-list-index-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-index-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -34,7 +34,7 @@
 	struct mailbox_list_index_record irec;
 	uint32_t seq;
 
-	memset(&irec, 0, sizeof(irec));
+	i_zero(&irec);
 	irec.name_id = node->name_id;
 	if (node->parent != NULL)
 		irec.parent_uid = node->parent->uid;
@@ -485,7 +485,7 @@
 		i_assert(data != NULL && !expunged);
 		memcpy(&rec, data, sizeof(rec));
 		rec.uid_validity = 0;
-		memset(&rec.guid, 0, sizeof(rec.guid));
+		i_zero(&rec.guid);
 		mail_index_update_ext(sync_ctx->trans, seq,
 				      sync_ctx->ilist->ext_id, &rec, NULL);
 	}
--- a/src/lib-storage/list/mailbox-list-iter.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-iter.c	Wed Jan 11 01:57:46 2017 +0100
@@ -467,7 +467,7 @@
 	if (ns->prefix_len == 0 || !mailbox_list_ns_prefix_match(ctx, ns))
 		return FALSE;
 
-	memset(&ctx->ns_info, 0, sizeof(ctx->ns_info));
+	i_zero(&ctx->ns_info);
 	ctx->ns_info.ns = ns;
 	ctx->ns_info.vname = p_strndup(ctx->pool, ns->prefix,
 				       ns->prefix_len-1);
@@ -906,7 +906,7 @@
 		ctx->autocreate_ctx;
 	enum imap_match_result match;
 
-	memset(&actx->new_info, 0, sizeof(actx->new_info));
+	i_zero(&actx->new_info);
 	actx->new_info.ns = ctx->list->ns;
 	actx->new_info.vname = autobox->name;
 	actx->new_info.flags = autobox->flags;
--- a/src/lib-storage/list/mailbox-list-notify-tree.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-notify-tree.c	Wed Jan 11 01:57:46 2017 +0100
@@ -26,7 +26,7 @@
 	if (!mail_index_lookup_seq(tree->view, nnode->index_uid, &seq))
 		return;
 
-	memset(&status, 0, sizeof(status));
+	i_zero(&status);
 	(void)mailbox_list_index_status(tree->list, tree->view, seq,
 		STATUS_UIDVALIDITY | STATUS_UIDNEXT | STATUS_MESSAGES |
 		STATUS_UNSEEN | STATUS_HIGHESTMODSEQ, &status, nnode->guid, NULL);
--- a/src/lib-storage/list/mailbox-list-subscriptions.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/mailbox-list-subscriptions.c	Wed Jan 11 01:57:46 2017 +0100
@@ -204,7 +204,7 @@
 	struct mailbox_tree_iterate_context *iter;
 	const char *name;
 
-	memset(&update_ctx, 0, sizeof(update_ctx));
+	i_zero(&update_ctx);
 	update_ctx.iter_ctx = ctx;
 	update_ctx.tree_ctx = tree;
 	update_ctx.glob = ctx->glob;
--- a/src/lib-storage/list/subscription-file.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/list/subscription-file.c	Wed Jan 11 01:57:46 2017 +0100
@@ -132,7 +132,7 @@
 	if (strcasecmp(name, "INBOX") == 0)
 		name = "INBOX";
 
-	memset(&dotlock_set, 0, sizeof(dotlock_set));
+	i_zero(&dotlock_set);
 	dotlock_set.use_excl_lock = mail_set->dotlock_use_excl;
 	dotlock_set.nfs_flush = mail_set->mail_nfs_storage;
 	dotlock_set.temp_prefix = temp_prefix;
--- a/src/lib-storage/mail-search-args-simplify.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mail-search-args-simplify.c	Wed Jan 11 01:57:46 2017 +0100
@@ -58,7 +58,7 @@
 static void mail_search_arg_get_base_mask(const struct mail_search_arg *arg,
 					  struct mail_search_simplify_prev_arg *mask_r)
 {
-	memset(mask_r, 0, sizeof(*mask_r));
+	i_zero(mask_r);
 	mask_r->bin_mask.type = arg->type;
 	mask_r->bin_mask.match_not = arg->match_not;
 	mask_r->bin_mask.fuzzy = arg->fuzzy;
@@ -503,7 +503,7 @@
 	struct mail_search_arg *sub, **all_argsp = argsp;
 	bool merged;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.parent_and = parent_and;
 	ctx.pool = pool_alloconly_create("mail search args simplify", 1024);
 	hash_table_create(&ctx.prev_args, ctx.pool, 0,
--- a/src/lib-storage/mail-search-build.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mail-search-build.c	Wed Jan 11 01:57:46 2017 +0100
@@ -145,7 +145,7 @@
 	*args_r = NULL;
 	*error_r = NULL;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.args = args = mail_search_build_init();
 	ctx.pool = args->pool;
 	ctx.reg = reg;
--- a/src/lib-storage/mail-storage-hooks.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mail-storage-hooks.c	Wed Jan 11 01:57:46 2017 +0100
@@ -64,7 +64,7 @@
 {
 	struct mail_storage_module_hooks new_hook;
 
-	memset(&new_hook, 0, sizeof(new_hook));
+	i_zero(&new_hook);
 	new_hook.module = module;
 	new_hook.hooks = hooks;
 
--- a/src/lib-storage/mail-storage-service.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mail-storage-service.c	Wed Jan 11 01:57:46 2017 +0100
@@ -317,7 +317,7 @@
 	const char *new_username;
 	int ret;
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info.service = input->service != NULL ? input->service :
 		ctx->service->name;
 	info.local_ip = input->local_ip;
@@ -445,7 +445,7 @@
 {
 	struct mail_storage_service_privileges priv;
 
-	memset(&priv, 0, sizeof(priv));
+	i_zero(&priv);
 	priv.uid = (uid_t)-1;
 	priv.gid = (gid_t)-1;
 	return get_var_expand_table(ctx->service, NULL, input, &priv);
@@ -479,7 +479,7 @@
 	uid_t uid = (uid_t)-1;
 	gid_t gid = (gid_t)-1;
 
-	memset(priv_r, 0, sizeof(*priv_r));
+	i_zero(priv_r);
 	if (*set->mail_uid != '\0') {
 		if (!parse_uid(set->mail_uid, &uid, error_r)) {
 			*error_r = t_strdup_printf("%s (from %s)", *error_r,
@@ -969,7 +969,7 @@
 	flags = input == NULL ? ctx->flags :
 		mail_storage_service_input_get_flags(ctx, input);
 
-	memset(&set_input, 0, sizeof(set_input));
+	i_zero(&set_input);
 	set_input.roots = ctx->set_roots;
 	set_input.preserve_user = TRUE;
 	/* settings reader may exec doveconf, which is going to clear
@@ -1075,7 +1075,7 @@
 	if ((ctx->flags & MAIL_STORAGE_SERVICE_FLAG_NO_PLUGINS) != 0)
 		return 0;
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.binary_name = master_service_get_name(ctx->service);
 	mod_set.setting_name = "mail_plugins";
--- a/src/lib-storage/mail-storage.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mail-storage.c	Wed Jan 11 01:57:46 2017 +0100
@@ -1251,7 +1251,7 @@
 
 	timeout_remove(&storage->binary_cache.to);
 	i_stream_destroy(&storage->binary_cache.input);
-	memset(&storage->binary_cache, 0, sizeof(storage->binary_cache));
+	i_zero(&storage->binary_cache);
 }
 
 void mailbox_close(struct mailbox *box)
@@ -1400,7 +1400,7 @@
 
 static void mailbox_close_reset_path(struct mailbox *box)
 {
-	memset(&box->_perm, 0, sizeof(box->_perm));
+	i_zero(&box->_perm);
 	box->_path = NULL;
 	box->_index_path = NULL;
 }
@@ -1662,7 +1662,7 @@
 mailbox_get_status_set_defaults(struct mailbox *box,
 				struct mailbox_status *status_r)
 {
-	memset(status_r, 0, sizeof(*status_r));
+	i_zero(status_r);
 	if ((box->storage->class_flags & MAIL_STORAGE_CLASS_FLAG_HAVE_MAIL_GUIDS) != 0)
 		status_r->have_guids = TRUE;
 	if ((box->storage->class_flags & MAIL_STORAGE_CLASS_FLAG_HAVE_MAIL_SAVE_GUIDS) != 0)
@@ -1700,7 +1700,7 @@
 int mailbox_get_metadata(struct mailbox *box, enum mailbox_metadata_items items,
 			 struct mailbox_metadata *metadata_r)
 {
-	memset(metadata_r, 0, sizeof(*metadata_r));
+	i_zero(metadata_r);
 	if (mailbox_verify_existing_name(box) < 0)
 		return -1;
 
@@ -1757,7 +1757,7 @@
 
 	*_ctx = NULL;
 
-	memset(status_r, 0, sizeof(*status_r));
+	i_zero(status_r);
 	ret = box->v.sync_deinit(ctx, status_r);
 	if (ret < 0 && box->inbox_user &&
 	    !box->storage->user->inbox_open_error_logged) {
@@ -2417,7 +2417,7 @@
 
 void mailbox_refresh_permissions(struct mailbox *box)
 {
-	memset(&box->_perm, 0, sizeof(box->_perm));
+	i_zero(&box->_perm);
 	(void)mailbox_get_permissions(box);
 }
 
@@ -2568,7 +2568,7 @@
 	    i_isdigit(str[5]) && i_isdigit(str[6]) && str[7] == '-' &&
 	    i_isdigit(str[8]) && i_isdigit(str[9]) && str[10] == '\0') {
 		/* yyyy-mm-dd */
-		memset(&tm, 0, sizeof(tm));
+		i_zero(&tm);
 		tm.tm_year = (str[0]-'0') * 1000 + (str[1]-'0') * 100 +
 			(str[2]-'0') * 10 + (str[3]-'0') - 1900;
 		tm.tm_mon = (str[5]-'0') * 10 + (str[6]-'0') - 1;
--- a/src/lib-storage/mail-user.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mail-user.c	Wed Jan 11 01:57:46 2017 +0100
@@ -337,7 +337,7 @@
 
 	i_assert(!user->home_looked_up);
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info.service = user->service;
 	if (user->local_ip != NULL)
 		info.local_ip = *user->local_ip;
@@ -485,7 +485,7 @@
 	struct module *module;
 	size_t name_len = strlen(name);
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.binary_name = master_service_get_name(master_service);
 	mod_set.setting_name = "<built-in storage lookup>";
--- a/src/lib-storage/mailbox-attribute.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mailbox-attribute.c	Wed Jan 11 01:57:46 2017 +0100
@@ -72,7 +72,7 @@
 	struct mailbox_attribute_internal dreg;
 	unsigned int insert_idx;
 
-	memset(&dreg, 0, sizeof(dreg));
+	i_zero(&dreg);
 	dreg.type = type;	
 	dreg.key = key;
 
@@ -115,7 +115,7 @@
 		plen--;
 	}
 
-	memset(&dreg, 0, sizeof(dreg));
+	i_zero(&dreg);
 	dreg.type = type;	
 	dreg.key = bare_prefix;
 
@@ -212,7 +212,7 @@
 {
 	struct mail_attribute_value value;
 
-	memset(&value, 0, sizeof(value));
+	i_zero(&value);
 	return mailbox_attribute_set_common(t, type, key, &value);
 }
 
@@ -326,7 +326,7 @@
 			  struct mail_attribute_value *value_r)
 {
 	int ret;
-	memset(value_r, 0, sizeof(*value_r));
+	i_zero(value_r);
 	if ((ret = mailbox_attribute_get_common(t, type, key, value_r)) <= 0)
 		return ret;
 	i_assert(value_r->value != NULL);
@@ -339,7 +339,7 @@
 {
 	int ret;
 
-	memset(value_r, 0, sizeof(*value_r));
+	i_zero(value_r);
 	value_r->flags |= MAIL_ATTRIBUTE_VALUE_FLAG_INT_STREAMS;
 	if ((ret = mailbox_attribute_get_common(t, type, key, value_r)) <= 0)
 		return ret;
--- a/src/lib-storage/mailbox-list.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib-storage/mailbox-list.c	Wed Jan 11 01:57:46 2017 +0100
@@ -265,7 +265,7 @@
 
 void mailbox_list_settings_init_defaults(struct mailbox_list_settings *set_r)
 {
-	memset(set_r, 0, sizeof(*set_r));
+	i_zero(set_r);
 	set_r->mailbox_dir_name = "";
 	set_r->maildir_name = "";
 	set_r->list_index_fname = MAILBOX_LIST_INDEX_DEFAULT_PREFIX;
@@ -879,7 +879,7 @@
 	const char *path, *parent_name, *parent_path, *p;
 	struct stat st;
 
-	memset(permissions_r, 0, sizeof(*permissions_r));
+	i_zero(permissions_r);
 
 	/* use safe defaults */
 	permissions_r->file_uid = (uid_t)-1;
@@ -1593,7 +1593,7 @@
 	stamp = list->changelog_timestamp != (time_t)-1 ?
 		list->changelog_timestamp : ioloop_time;
 
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	rec.type = type;
 	memcpy(rec.mailbox_guid, mailbox_guid, sizeof(rec.mailbox_guid));
 	mailbox_log_record_set_timestamp(&rec, stamp);
@@ -1844,8 +1844,8 @@
 	struct mailbox_list_fs_context *ctx;
 	struct fs *parent_fs;
 
-	memset(&ssl_set, 0, sizeof(ssl_set));
-	memset(&fs_set, 0, sizeof(fs_set));
+	i_zero(&ssl_set);
+	i_zero(&fs_set);
 	mail_user_init_fs_settings(list->ns->user, &fs_set, &ssl_set);
 	fs_set.root_path = root_dir;
 	fs_set.temp_file_prefix = mailbox_list_get_global_temp_prefix(list);
--- a/src/lib/buffer.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/buffer.c	Wed Jan 11 01:57:46 2017 +0100
@@ -105,7 +105,7 @@
 	i_assert(sizeof(*buffer) >= sizeof(struct real_buffer));
 
 	buf = (struct real_buffer *)buffer;
-	memset(buf, 0, sizeof(*buf));
+	i_zero(buf);
 	buf->alloc = size;
 	buf->r_buffer = buf->w_buffer = data;
 	/* clear the whole memory area. unnecessary usually, but if the
@@ -123,7 +123,7 @@
 	i_assert(sizeof(*buffer) >= sizeof(struct real_buffer));
 
 	buf = (struct real_buffer *)buffer;
-	memset(buf, 0, sizeof(*buf));
+	i_zero(buf);
 
 	buf->used = buf->alloc = size;
 	buf->r_buffer = data;
--- a/src/lib/connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -299,7 +299,7 @@
 void connection_disconnect(struct connection *conn)
 {
 	conn->last_input = 0;
-	memset(&conn->last_input_tv, 0, sizeof(conn->last_input_tv));
+	i_zero(&conn->last_input_tv);
 	if (conn->to != NULL)
 		timeout_remove(&conn->to);
 	if (conn->io != NULL)
--- a/src/lib/failures.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/failures.c	Wed Jan 11 01:57:46 2017 +0100
@@ -268,7 +268,7 @@
 	struct failure_context ctx;
 	va_list args;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.type = LOG_TYPE_PANIC;
 
 	va_start(args, format);
@@ -281,7 +281,7 @@
 	struct failure_context ctx;
 	va_list args;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.type = LOG_TYPE_FATAL;
 	ctx.exit_status = FATAL_DEFAULT;
 
@@ -295,7 +295,7 @@
 	struct failure_context ctx;
 	va_list args;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.type = LOG_TYPE_FATAL;
 	ctx.exit_status = status;
 
@@ -635,7 +635,7 @@
 
 void i_failure_parse_line(const char *line, struct failure_line *failure)
 {
-	memset(failure, 0, sizeof(*failure));
+	i_zero(failure);
 	if (!line_is_ok(line)) {
 		failure->log_type = LOG_TYPE_ERROR;
 		failure->text = line;
--- a/src/lib/fd-close-on-exec.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/fd-close-on-exec.c	Wed Jan 11 01:57:46 2017 +0100
@@ -50,7 +50,7 @@
 			}
 
 			if (net_getpeername(first_fd, &raddr, &rport) < 0) {
-				memset(&raddr, 0, sizeof(raddr));
+				i_zero(&raddr);
 				rport = 0;
 			}
 			i_panic("Leaked socket fd %d: %s:%u -> %s:%u",
--- a/src/lib/file-dotlock.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/file-dotlock.c	Wed Jan 11 01:57:46 2017 +0100
@@ -488,7 +488,7 @@
 		now + set->timeout;
 	tmp_path = t_str_new(256);
 
-	memset(&lock_info, 0, sizeof(lock_info));
+	i_zero(&lock_info);
 	lock_info.path = dotlock->path;
 	lock_info.set = set;
 	lock_info.lock_path = lock_path;
--- a/src/lib/file-lock.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/file-lock.c	Wed Jan 11 01:57:46 2017 +0100
@@ -72,7 +72,7 @@
 {
 	struct flock fl;
 
-	memset(&fl, 0, sizeof(fl));
+	i_zero(&fl);
 	fl.l_type = lock_type;
 	fl.l_whence = SEEK_SET;
 	fl.l_start = 0;
--- a/src/lib/file-set-size.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/file-set-size.c	Wed Jan 11 01:57:46 2017 +0100
@@ -93,7 +93,7 @@
 	/* OSX */
 	fstore_t fs;
 
-	memset(&fs, 0, sizeof(fs));
+	i_zero(&fs);
 	fs.fst_flags = F_ALLOCATECONTIG;
 	fs.fst_posmode = F_PEOFPOSMODE;
 	fs.fst_offset = 0;
--- a/src/lib/ioloop-epoll.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/ioloop-epoll.c	Wed Jan 11 01:57:46 2017 +0100
@@ -97,7 +97,7 @@
 
 	first = ioloop_iolist_add(*list, io);
 
-	memset(&event, 0, sizeof(event));
+	i_zero(&event);
 	event.data.ptr = *list;
 	event.events = epoll_event_mask(*list);
 
@@ -136,7 +136,7 @@
 	last = ioloop_iolist_del(*list, io);
 
 	if (!closed) {
-		memset(&event, 0, sizeof(event));
+		i_zero(&event);
 		event.data.ptr = *list;
 		event.events = epoll_event_mask(*list);
 
--- a/src/lib/ioloop.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/ioloop.c	Wed Jan 11 01:57:46 2017 +0100
@@ -856,7 +856,7 @@
 {
 	struct ioloop_context_callback cb;
 
-	memset(&cb, 0, sizeof(cb));
+	i_zero(&cb);
 	cb.activate = activate;
 	cb.deactivate = deactivate;
 	cb.context = context;
--- a/src/lib/iso8601-date.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/iso8601-date.c	Wed Jan 11 01:57:46 2017 +0100
@@ -239,7 +239,7 @@
 	struct iso8601_date_parser parser;
 	time_t timestamp;
 
-	memset(&parser, 0, sizeof(parser));
+	i_zero(&parser);
 	parser.cur = data;
 	parser.end = data + size;
 
--- a/src/lib/istream-sized.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/istream-sized.c	Wed Jan 11 01:57:46 2017 +0100
@@ -85,7 +85,7 @@
 		stream->buffer = i_stream_get_data(stream->parent, &pos);
 	} while (pos <= stream->pos && ret > 0);
 
-	memset(&data, 0, sizeof(data));
+	i_zero(&data);
 	data.v_offset = stream->istream.v_offset;
 	data.new_bytes = pos;
 	data.wanted_size = sstream->size;
--- a/src/lib/istream.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/istream.c	Wed Jan 11 01:57:46 2017 +0100
@@ -874,7 +874,7 @@
 	if (_stream->init_buffer_size == 0)
 		_stream->init_buffer_size = I_STREAM_MIN_SIZE;
 
-	memset(&_stream->statbuf, 0, sizeof(_stream->statbuf));
+	i_zero(&_stream->statbuf);
 	_stream->statbuf.st_size = -1;
 	_stream->statbuf.st_atime =
 		_stream->statbuf.st_mtime =
--- a/src/lib/lib-signals.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/lib-signals.c	Wed Jan 11 01:57:46 2017 +0100
@@ -108,7 +108,7 @@
 
 	if (si == NULL) {
 		/* Solaris can leave this to NULL */
-		memset(&tmp_si, 0, sizeof(tmp_si));
+		i_zero(&tmp_si);
 		tmp_si.si_signo = signo;
 		tmp_si.si_code = SI_NOINFO;
 		si = &tmp_si;
--- a/src/lib/md4.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/md4.c	Wed Jan 11 01:57:46 2017 +0100
@@ -257,7 +257,7 @@
 	result[14] = ctx->d >> 16;
 	result[15] = ctx->d >> 24;
 
-	safe_memset(ctx, 0, sizeof(*ctx));
+	i_zero_safe(ctx);
 }
 
 void md4_get_digest(const void *data, size_t size,
--- a/src/lib/md5.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/md5.c	Wed Jan 11 01:57:46 2017 +0100
@@ -272,7 +272,7 @@
 	result[14] = ctx->d >> 16;
 	result[15] = ctx->d >> 24;
 
-	safe_memset(ctx, 0, sizeof(*ctx));
+	i_zero_safe(ctx);
 }
 
 void md5_get_digest(const void *data, size_t size,
--- a/src/lib/mempool-alloconly.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/mempool-alloconly.c	Wed Jan 11 01:57:46 2017 +0100
@@ -130,7 +130,7 @@
 #endif
 
 	/* create a fake alloconly_pool so we can call block_alloc() */
-	memset(&apool, 0, sizeof(apool));
+	i_zero(&apool);
 	apool.pool = static_alloconly_pool;
 	apool.refcount = 1;
 
--- a/src/lib/mountpoint.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/mountpoint.c	Wed Jan 11 01:57:46 2017 +0100
@@ -65,7 +65,7 @@
 {
 	struct statvfs buf;
 
-	memset(point_r, 0, sizeof(*point_r));
+	i_zero(point_r);
 	if (statvfs(path, &buf) < 0) {
 		if (errno == ENOENT)
 			return 0;
@@ -89,7 +89,7 @@
 int mountpoint_get(const char *path, pool_t pool, struct mountpoint *point_r)
 {
 #ifdef MOUNTPOINT_UNKNOWN
-	memset(point_r, 0, sizeof(*point_r));
+	i_zero(point_r);
 	errno = ENOSYS;
 	return -1;
 #elif defined (MOUNTPOINT_STATVFS)
@@ -101,7 +101,7 @@
 	const struct mountpoint *mnt;
 	struct stat st;
 
-	memset(point_r, 0, sizeof(*point_r));
+	i_zero(point_r);
 	if (stat(path, &st) < 0) {
 		if (errno == ENOENT)
 			return 0;
@@ -213,7 +213,7 @@
 	vmt_object   = vmt_base + vmt->vmt_data[VMT_OBJECT].vmt_off;
 	vmt_stub     = vmt_base + vmt->vmt_data[VMT_STUB].vmt_off;
 
-	memset(&iter->mnt, 0, sizeof(iter->mnt));
+	i_zero(&iter->mnt);
 	switch (vmt->vmt_gfstype) {
 	case MNT_NFS:
 	case MNT_NFS3:
@@ -249,7 +249,7 @@
 	if (iter->f == NULL)
 		return NULL;
 
-	memset(&iter->mnt, 0, sizeof(iter->mnt));
+	i_zero(&iter->mnt);
 	while ((getextmntent(iter->f, &ent.ext, sizeof(ent.ext))) == 0) {
 		if (hasmntopt(&ent.ent, MNTOPT_IGNORE) != NULL)
 			continue;
@@ -272,7 +272,7 @@
 	if (iter->f == NULL)
 		return NULL;
 
-	memset(&iter->mnt, 0, sizeof(iter->mnt));
+	i_zero(&iter->mnt);
 	while ((ent = getmntent(iter->f)) != NULL) {
 		if (strcmp(ent->mnt_type, MNTTYPE_SWAP) == 0 ||
 		    strcmp(ent->mnt_type, MNTTYPE_IGNORE) == 0 ||
--- a/src/lib/net.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/net.c	Wed Jan 11 01:57:46 2017 +0100
@@ -127,7 +127,7 @@
 {
 	/* IP structs may be sent across processes. Clear the whole struct
 	   first to make sure it won't leak any data across processes. */
-	memset(ip, 0, sizeof(*ip));
+	i_zero(ip);
 
 	ip->family = so->sin.sin_family;
 
@@ -139,7 +139,7 @@
 	if (ip->family == AF_INET)
 		memcpy(&ip->u.ip4, &so->sin.sin_addr, sizeof(ip->u.ip4));
 	else
-		memset(&ip->u, 0, sizeof(ip->u));
+		i_zero(&ip->u);
 }
 
 static inline void sin_set_port(union sockaddr_union *so, in_port_t port)
@@ -176,7 +176,7 @@
 	}
 
 	/* create the socket */
-	memset(&so, 0, sizeof(so));
+	i_zero(&so);
         so.sin.sin_family = ip->family;
 	fd = socket(ip->family, sock_type, 0);
 
@@ -267,7 +267,7 @@
 	int fd;
 
 	/* create the socket */
-	memset(&so, 0, sizeof(so));
+	i_zero(&so);
         so.sin.sin_family = ip->family;
 	fd = socket(ip->family, SOCK_STREAM, 0);
 	if (fd == -1) {
@@ -289,7 +289,7 @@
 	union sockaddr_union_unix sa;
 	int fd, ret;
 
-	memset(&sa, 0, sizeof(sa));
+	i_zero(&sa);
 	sa.un.sun_family = AF_UNIX;
 	if (i_strocpy(sa.un.sun_path, path, sizeof(sa.un.sun_path)) < 0) {
 		/* too long path */
@@ -437,7 +437,7 @@
 	int ret, fd, opt = 1;
 	socklen_t len;
 
-	memset(&so, 0, sizeof(so));
+	i_zero(&so);
 	sin_set_port(&so, *port);
 	sin_set_ip(&so, my_ip);
 
@@ -514,7 +514,7 @@
 	} sa;
 	int fd;
 
-	memset(&sa, 0, sizeof(sa));
+	i_zero(&sa);
 	sa.un.sun_family = AF_UNIX;
 	if (i_strocpy(sa.un.sun_path, path, sizeof(sa.un.sun_path)) < 0) {
 		/* too long path */
@@ -601,7 +601,7 @@
 	}
 	if (so.sin.sin_family == AF_UNIX) {
 		if (addr_r != NULL)
-			memset(addr_r, 0, sizeof(*addr_r));
+			i_zero(addr_r);
 		if (port_r != NULL) *port_r = 0;
 	} else {
 		if (addr_r != NULL) sin_get_ip(&so, addr_r);
@@ -735,7 +735,7 @@
 	char hbuf[NI_MAXHOST];
 	int ret;
 
-	memset(&so, 0, sizeof(so));
+	i_zero(&so);
 	sin_set_ip(&so, ip);
 	ret = getnameinfo(&so.sa, addrlen, hbuf, sizeof(hbuf), NULL, 0,
 			  NI_NAMEREQD);
@@ -758,7 +758,7 @@
 		return -1;
 	if (so.sin.sin_family == AF_UNIX) {
 		if (addr != NULL)
-			memset(addr, 0, sizeof(*addr));
+			i_zero(addr);
 		if (port != NULL) *port = 0;
 	} else {
 		if (addr != NULL) sin_get_ip(&so, addr);
@@ -779,7 +779,7 @@
 		return -1;
 	if (so.sin.sin_family == AF_UNIX) {
 		if (addr != NULL)
-			memset(addr, 0, sizeof(*addr));
+			i_zero(addr);
 		if (port != NULL) *port = 0;
 	} else {
 		if (addr != NULL) sin_get_ip(&so, addr);
--- a/src/lib/ostream.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/ostream.c	Wed Jan 11 01:57:46 2017 +0100
@@ -230,7 +230,7 @@
 {
 	struct const_iovec iov;
 
-	memset(&iov, 0, sizeof(iov));
+	i_zero(&iov);
 	iov.iov_base = data;
 	iov.iov_len = size;
 
@@ -278,7 +278,7 @@
 {
 	struct const_iovec iov;
 
-	memset(&iov, 0, sizeof(iov));
+	i_zero(&iov);
 	iov.iov_base = data;
 	iov.iov_len = size;
 
--- a/src/lib/restrict-access.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/restrict-access.c	Wed Jan 11 01:57:46 2017 +0100
@@ -23,7 +23,7 @@
 
 void restrict_access_init(struct restrict_access_settings *set)
 {
-	memset(set, 0, sizeof(*set));
+	i_zero(set);
 
 	set->uid = (uid_t)-1;
 	set->gid = (gid_t)-1;
--- a/src/lib/sendfile-util.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/sendfile-util.c	Wed Jan 11 01:57:46 2017 +0100
@@ -73,7 +73,7 @@
 		return 0;
 	}
 
-	memset(&hdtr, 0, sizeof(hdtr));
+	i_zero(&hdtr);
 	ret = sendfile(in_fd, out_fd, *offset, count, &hdtr, &sbytes, 0);
 
 	*offset += sbytes;
--- a/src/lib/seq-range-array.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/seq-range-array.c	Wed Jan 11 01:57:46 2017 +0100
@@ -484,7 +484,7 @@
 void seq_range_array_iter_init(struct seq_range_iter *iter_r,
 			       const ARRAY_TYPE(seq_range) *array)
 {
-	memset(iter_r, 0, sizeof(*iter_r));
+	i_zero(iter_r);
 	iter_r->array = array;
 }
 
--- a/src/lib/sha3.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/sha3.c	Wed Jan 11 01:57:46 2017 +0100
@@ -115,14 +115,14 @@
 void sha3_256_init(void *context)
 {
 	struct sha3_ctx *ctx = context;
-	memset(ctx, 0, sizeof(*ctx));
+	i_zero(ctx);
 	ctx->capacityWords = 2 * 256 / (8 * sizeof(uint64_t));
 }
 
 void sha3_512_init(void *context)
 {
 	struct sha3_ctx *ctx = context;
-	memset(ctx, 0, sizeof(*ctx));
+	i_zero(ctx);
 	ctx->capacityWords = 2 * 512 / (8 * sizeof(uint64_t));
 }
 
--- a/src/lib/test-ioloop.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/test-ioloop.c	Wed Jan 11 01:57:46 2017 +0100
@@ -56,7 +56,7 @@
 		return;
 	}
 
-	memset(&test_ctx, 0, sizeof(test_ctx));
+	i_zero(&test_ctx);
 
 	struct ioloop *ioloop = io_loop_create();
 
--- a/src/lib/test-utc-mktime.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/test-utc-mktime.c	Wed Jan 11 01:57:46 2017 +0100
@@ -39,7 +39,7 @@
 	bool success;
 
 	for (i = 0; i < N_ELEMENTS(input); i++) {
-		memset(&tm, 0, sizeof(tm));
+		i_zero(&tm);
 		tm.tm_year = input[i].year - 1900;
 		tm.tm_mon = input[i].month - 1;
 		tm.tm_mday = input[i].day;
--- a/src/lib/timing.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/timing.c	Wed Jan 11 01:57:46 2017 +0100
@@ -29,7 +29,7 @@
 
 void timing_reset(struct timing *timing)
 {
-	memset(timing, 0, sizeof(*timing));
+	i_zero(timing);
 }
 
 void timing_add_usecs(struct timing *timing, uint64_t usecs)
--- a/src/lib/uri-util.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/uri-util.c	Wed Jan 11 01:57:46 2017 +0100
@@ -529,7 +529,7 @@
 	 */
 
 	if (auth != NULL)
-		memset(auth, 0, sizeof(*auth));
+		i_zero(auth);
 
 	/* Scan ahead to check whether there is a [userinfo "@"] uri component */
 	for (p = parser->cur; p < parser->end; p++){
@@ -645,7 +645,7 @@
 	if (path_r != NULL)
 		p_array_init(&segments, parser->pool, 16);
 	else
-		memset(&segments, 0, sizeof(segments));
+		i_zero(&segments);
 
 	/* check for a leading '/' and indicate absolute path
 	   when it is present
--- a/src/lib/var-expand.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lib/var-expand.c	Wed Jan 11 01:57:46 2017 +0100
@@ -437,7 +437,7 @@
 	unsigned int i, modifier_count;
 	size_t len;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	for (; *str != '\0'; str++) {
 		if (*str != '%')
 			str_append_c(dest, *str);
@@ -445,7 +445,7 @@
 			int sign = 1;
 
 			str++;
-			memset(&ctx, 0, sizeof(ctx));
+			i_zero(&ctx);
 
 			/* [<offset>.]<width>[<modifiers>]<variable> */
 			if (*str == '-') {
--- a/src/lmtp/client.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lmtp/client.c	Wed Jan 11 01:57:46 2017 +0100
@@ -179,7 +179,7 @@
 	struct lda_settings *lda_set;
 	const char *error;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = input.service = "lmtp";
 	input.local_ip = client->local_ip;
 	input.remote_ip = client->remote_ip;
@@ -389,7 +389,7 @@
 			i_error("close(mail data fd) failed: %m");
 	}
 
-	memset(&client->state, 0, sizeof(client->state));
+	i_zero(&client->state);
 	p_clear(client->state_pool);
 	client->state.mail_data_fd = -1;
 
--- a/src/lmtp/commands.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lmtp/commands.c	Wed Jan 11 01:57:46 2017 +0100
@@ -330,11 +330,11 @@
 	pool_t pool;
 	int ret;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = input.service = "lmtp";
 	mail_storage_service_init_settings(storage_service, &input);
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info.service = master_service_get_name(master_service);
 	info.local_ip = client->local_ip;
 	info.remote_ip = client->remote_ip;
@@ -358,7 +358,7 @@
 		}
 	}
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.port = client->local_port;
 	set.protocol = LMTP_CLIENT_PROTOCOL_LMTP;
 	set.timeout_msecs = LMTP_PROXY_DEFAULT_TIMEOUT_MSECS;
@@ -402,7 +402,7 @@
 	if (client->proxy == NULL) {
 		struct lmtp_proxy_settings proxy_set;
 
-		memset(&proxy_set, 0, sizeof(proxy_set));
+		i_zero(&proxy_set);
 		proxy_set.my_hostname = client->my_domain;
 		proxy_set.dns_client_socket_path = dns_client_socket_path;
 		proxy_set.session_id = client->state.session_id;
@@ -697,7 +697,7 @@
 					array_count(&client->state.rcpt_to)+1);
 	}
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = input.service = "lmtp";
 	input.username = username;
 	input.local_ip = client->local_ip;
@@ -852,7 +852,7 @@
 	settings_var_expand(&lda_setting_parser_info, lda_set, client->pool,
 		mail_user_var_expand_table(client->state.dest_user));
 
-	memset(&dctx, 0, sizeof(dctx));
+	i_zero(&dctx);
 	dctx.session = session;
 	dctx.pool = session->pool;
 	dctx.set = lda_set;
--- a/src/lmtp/lmtp-proxy.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lmtp/lmtp-proxy.c	Wed Jan 11 01:57:46 2017 +0100
@@ -135,7 +135,7 @@
 			return conn;
 	}
 
-	memset(&client_set, 0, sizeof(client_set));
+	i_zero(&client_set);
 	client_set.mail_from = proxy->mail_from;
 	client_set.my_hostname = proxy->set.my_hostname;
 	client_set.dns_client_socket_path = proxy->set.dns_client_socket_path;
--- a/src/lmtp/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/lmtp/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -46,7 +46,7 @@
 	struct master_service_settings_input input;
 	struct master_service_settings_output output;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "lmtp";
 	input.service = "lmtp";
 	(void)master_service_settings_read(master_service,
@@ -59,7 +59,7 @@
 	struct master_service_connection conn;
 
 	if (IS_STANDALONE()) {
-		memset(&conn, 0, sizeof(conn));
+		i_zero(&conn);
 		(void)client_create(STDIN_FILENO, STDOUT_FILENO, &conn);
 	}
 	dns_client_socket_path = t_abspath(DNS_CLIENT_SOCKET_PATH);
--- a/src/log/log-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/log/log-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -135,7 +135,7 @@
 	case LOG_TYPE_ERROR:
 	case LOG_TYPE_FATAL:
 	case LOG_TYPE_PANIC:
-		memset(&err, 0, sizeof(err));
+		i_zero(&err);
 		err.type = ctx->type;
 		err.timestamp = log_time->tv_sec;
 		err.prefix = prefix;
@@ -156,7 +156,7 @@
 	struct failure_context failure_ctx;
 	const char *prefix = log->default_prefix;
 
-	memset(&failure_ctx, 0, sizeof(failure_ctx));
+	i_zero(&failure_ctx);
 	failure_ctx.type = LOG_TYPE_FATAL;
 	failure_ctx.timestamp = tm;
 	failure_ctx.timestamp_usecs = log_time->tv_usec;
@@ -266,7 +266,7 @@
 	}
 	i_assert(failure.log_type < LOG_TYPE_COUNT);
 
-	memset(&failure_ctx, 0, sizeof(failure_ctx));
+	i_zero(&failure_ctx);
 	failure_ctx.type = failure.log_type;
 	failure_ctx.timestamp = tm;
 	failure_ctx.timestamp_usecs = log_time->tv_usec;
--- a/src/login-common/client-common-auth.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/login-common/client-common-auth.c	Wed Jan 11 01:57:46 2017 +0100
@@ -99,7 +99,7 @@
 	ARRAY_TYPE(const_string) alt_usernames;
 
 	t_array_init(&alt_usernames, 4);
-	memset(reply_r, 0, sizeof(*reply_r));
+	i_zero(reply_r);
 
 	for (; *args != NULL; args++) {
 		p = strchr(*args, '=');
@@ -386,7 +386,7 @@
 		return -1;
 	}
 
-	memset(&proxy_set, 0, sizeof(proxy_set));
+	i_zero(&proxy_set);
 	proxy_set.host = reply->host;
 	if (reply->hostip != NULL &&
 	    net_addr2ip(reply->hostip, &proxy_set.ip) < 0)
@@ -608,7 +608,7 @@
 		 sasl_reply == SASL_SERVER_REPLY_AUTH_ABORTED ||
 		 sasl_reply == SASL_SERVER_REPLY_MASTER_FAILED);
 
-	memset(&reply, 0, sizeof(reply));
+	i_zero(&reply);
 	switch (sasl_reply) {
 	case SASL_SERVER_REPLY_SUCCESS:
 		if (client->to_auth_waiting != NULL)
--- a/src/login-common/login-proxy-state.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/login-common/login-proxy-state.c	Wed Jan 11 01:57:46 2017 +0100
@@ -91,7 +91,7 @@
 {
 	struct login_proxy_record *rec, key;
 
-	memset(&key, 0, sizeof(key));
+	i_zero(&key);
 	key.ip = *ip;
 	key.port = port;
 
--- a/src/login-common/login-settings.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/login-common/login-settings.c	Wed Jan 11 01:57:46 2017 +0100
@@ -168,7 +168,7 @@
 	void **sets;
 	unsigned int i, count;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = login_set_roots;
 	input.module = login_binary->process_name;
 	input.service = login_binary->protocol;
--- a/src/login-common/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/login-common/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -314,7 +314,7 @@
 	if (global_login_settings->login_plugins[0] == '\0')
 		return;
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.binary_name = login_binary->process_name;
 	mod_set.setting_name = "login_plugins";
--- a/src/login-common/sasl-server.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/login-common/sasl-server.c	Wed Jan 11 01:57:46 2017 +0100
@@ -128,7 +128,7 @@
 	buffer_t *buf;
 	const char *session_id = client_get_session_id(client);
 
-	memset(&req, 0, sizeof(req));
+	i_zero(&req);
 	req.auth_pid = anvil_request->auth_pid;
 	req.auth_id = anvil_request->auth_id;
 	req.local_ip = client->local_ip;
@@ -153,7 +153,7 @@
 	client->auth_finished = ioloop_time;
 	client->master_auth_id = req.auth_id;
 
-	memset(&params, 0, sizeof(params));
+	i_zero(&params);
 	params.client_fd = client->fd;
 	params.socket_path = client->postlogin_socket_path;
 	params.request = req;
@@ -354,7 +354,7 @@
 		return;
 	}
 
-	memset(&info, 0, sizeof(info));
+	i_zero(&info);
 	info.mech = mech->name;
 	info.service = service;
 	info.session_id = client_get_session_id(client);
--- a/src/login-common/ssl-proxy-openssl.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/login-common/ssl-proxy-openssl.c	Wed Jan 11 01:57:46 2017 +0100
@@ -605,7 +605,7 @@
 {
 	struct ssl_server_context *ctx, lookup_ctx;
 
-	memset(&lookup_ctx, 0, sizeof(lookup_ctx));
+	i_zero(&lookup_ctx);
 	lookup_ctx.cert = set->ssl_cert;
 	lookup_ctx.key = set->ssl_key;
 	lookup_ctx.ca = set->ssl_ca;
@@ -1387,7 +1387,7 @@
 	   initialized though. */
 	(void)RAND_bytes(&buf, 1);
 
-	memset(&ssl_params, 0, sizeof(ssl_params));
+	i_zero(&ssl_params);
 	ssl_params.path = SSL_PARAMETERS_PATH;
 
 	ssl_proxy_count = 0;
--- a/src/master/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/master/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -337,7 +337,7 @@
 		}
 	}
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.module = MASTER_SERVICE_NAME;
 	input.config_path = services_get_config_socket_path(services);
@@ -410,7 +410,7 @@
 	struct master_service_settings_output output;
 	const char *error;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.module = "master";
 	input.parse_full_config = TRUE;
--- a/src/master/service-listen.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/master/service-listen.c	Wed Jan 11 01:57:46 2017 +0100
@@ -260,7 +260,7 @@
 	if (port) *port = -1;
 	if (family) *family = -1;
 
-	memset(&sockaddr, 0, sizeof(sockaddr));
+	i_zero(&sockaddr);
 	l = sizeof(sockaddr);
 
 	if (getsockname(fd, &sockaddr.sa, &l) < 0)
--- a/src/master/service-log.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/master/service-log.c	Wed Jan 11 01:57:46 2017 +0100
@@ -30,7 +30,7 @@
 	fd_close_on_exec(log_fd[0], TRUE);
 	fd_close_on_exec(log_fd[1], TRUE);
 
-	memset(&handshake, 0, sizeof(handshake));
+	i_zero(&handshake);
 	handshake.log_magic = MASTER_LOG_MAGIC;
 	handshake.prefix_len = strlen(log_prefix);
 
--- a/src/master/service-monitor.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/master/service-monitor.c	Wed Jan 11 01:57:46 2017 +0100
@@ -46,7 +46,7 @@
 			      dec2str(process->pid));
 
 		/* assume this process is busy */
-		memset(&status, 0, sizeof(status));
+		i_zero(&status);
 		service_status_more(process, &status);
 		process->available_count = 0;
 	} else {
--- a/src/plugins/acl/acl-api.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/acl-api.c	Wed Jan 11 01:57:46 2017 +0100
@@ -407,7 +407,7 @@
 			id_str = t_strdup_until(id_str, line++);
 	}
 
-	memset(rights_r, 0, sizeof(*rights_r));
+	i_zero(rights_r);
 
 	right_names = acl_right_names_parse(pool, line, &error);
 	if (*id_str != '-')
@@ -432,7 +432,7 @@
 void acl_rights_dup(const struct acl_rights *src,
 		    pool_t pool, struct acl_rights *dest_r)
 {
-	memset(dest_r, 0, sizeof(*dest_r));
+	i_zero(dest_r);
 	dest_r->id_type = src->id_type;
 	dest_r->identifier = p_strdup(pool, src->identifier);
 	dest_r->rights = src->rights == NULL ? NULL :
@@ -727,7 +727,7 @@
 	struct acl_rights_update ru;
 	const char *null = NULL;
 
-	memset(&ru, 0, sizeof(ru));
+	i_zero(&ru);
 	ru.modify_mode = ACL_MODIFY_MODE_REPLACE;
 	ru.neg_modify_mode = ACL_MODIFY_MODE_REPLACE;
 	ru.rights.id_type = ACL_ID_OWNER;
@@ -758,7 +758,7 @@
 	   ACLs are merged. In all other situations the ACLs are replaced
 	   (because there aren't duplicate rights entries and a user can't
 	   match multiple usernames). */
-	memset(&ru, 0, sizeof(ru));
+	i_zero(&ru);
 	rights = array_get(&aclobj->rights, &count);
 	if (!acl_backend_user_is_owner(aclobj->backend))
 		i = 0;
@@ -816,7 +816,7 @@
 	static const char *null = NULL;
 	struct acl_rights rights;
 
-	memset(&rights, 0, sizeof(rights));
+	i_zero(&rights);
 	rights.id_type = ACL_ID_ANYONE;
 	rights.rights = &null;
 	array_append(&aclobj->rights, &rights, 1);
--- a/src/plugins/acl/acl-attributes.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/acl-attributes.c	Wed Jan 11 01:57:46 2017 +0100
@@ -39,7 +39,7 @@
 					      &value_str) < 0)
 		return -1;
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	update.modify_mode = ACL_MODIFY_MODE_REPLACE;
 	update.neg_modify_mode = ACL_MODIFY_MODE_REPLACE;
 	update.last_change = value->last_change;
@@ -62,7 +62,7 @@
 	const char *id;
 	int ret;
 
-	memset(value_r, 0, sizeof(*value_r));
+	i_zero(value_r);
 
 	if (!box->storage->user->dsyncing) {
 		mail_storage_set_error(box->storage, MAIL_ERROR_PERM,
@@ -74,7 +74,7 @@
 	   can use this information) */
 	(void)acl_object_last_changed(aclobj, &value_r->last_change);
 
-	memset(&wanted_rights, 0, sizeof(wanted_rights));
+	i_zero(&wanted_rights);
 	id = key + strlen(MAILBOX_ATTRIBUTE_PREFIX_ACL);
 	if (acl_identifier_parse(id, &wanted_rights) < 0) {
 		mail_storage_set_error(box->storage, MAIL_ERROR_PARAMS,
--- a/src/plugins/acl/acl-backend-vfile-update.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/acl-backend-vfile-update.c	Wed Jan 11 01:57:46 2017 +0100
@@ -90,7 +90,7 @@
 		return FALSE;
 	}
 
-	memset(&right, 0, sizeof(right));
+	i_zero(&right);
 	right.id_type = update->rights.id_type;
 	right.identifier = p_strdup(aclobj->rights_pool,
 				    update->rights.identifier);
--- a/src/plugins/acl/acl-backend-vfile.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/acl-backend-vfile.c	Wed Jan 11 01:57:46 2017 +0100
@@ -229,7 +229,7 @@
 	if (old_validity != NULL)
 		new_validity = *old_validity;
 	else
-		memset(&new_validity, 0, sizeof(new_validity));
+		i_zero(&new_validity);
 
 	/* See if the mailbox exists. If we wanted recursive lookups we could
 	   skip this, but at least for now we assume that if an existing
@@ -558,7 +558,7 @@
 		p_clear(_aclobj->rights_pool);
 	}
 
-	memset(&validity, 0, sizeof(validity));
+	i_zero(&validity);
 	if (_aclobj->backend->global_file != NULL)
 		acl_object_add_global_acls(_aclobj);
 	else {
--- a/src/plugins/acl/acl-global-file.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/acl-global-file.c	Wed Jan 11 01:57:46 2017 +0100
@@ -122,7 +122,7 @@
 	array_clear(&file->rights);
 	p_clear(file->rights_pool);
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.file = file;
 	i_array_init(&ctx.parse_rights, 32);
 
--- a/src/plugins/acl/acl-mailbox-list.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/acl-mailbox-list.c	Wed Jan 11 01:57:46 2017 +0100
@@ -110,7 +110,7 @@
 		return;
 
 	/* no LOOKUP right by default, we can optimize this */
-	memset(&update_ctx, 0, sizeof(update_ctx));
+	i_zero(&update_ctx);
 	update_ctx.iter_ctx = &ctx->ctx;
 	update_ctx.glob =
 		imap_match_init(pool_datastack_create(), "*",
--- a/src/plugins/acl/acl-mailbox.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/acl-mailbox.c	Wed Jan 11 01:57:46 2017 +0100
@@ -95,7 +95,7 @@
 	struct acl_object_list_iter *iter;
 	struct acl_rights_update update;
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	update.modify_mode = ACL_MODIFY_MODE_REPLACE;
 	update.neg_modify_mode = ACL_MODIFY_MODE_REPLACE;
 
--- a/src/plugins/acl/doveadm-acl.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/acl/doveadm-acl.c	Wed Jan 11 01:57:46 2017 +0100
@@ -230,7 +230,7 @@
 	if (cmd_acl_mailbox_open(_ctx, user, mailbox, &box) < 0)
 		return -1;
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	update.modify_mode = ctx->modify_mode;
 	update.neg_modify_mode = ctx->modify_mode;
 	if (acl_rights_update_import(&update, id, rights, &error) < 0)
@@ -290,7 +290,7 @@
 	if (cmd_acl_mailbox_open(ctx, user, mailbox, &box) < 0)
 		return -1;
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	if (acl_rights_update_import(&update, id, NULL, &error) < 0)
 		i_fatal_status(EX_USAGE, "%s", error);
 	if ((ret = cmd_acl_mailbox_update(box, &update)) < 0) {
--- a/src/plugins/dict-ldap/dict-ldap-settings.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/dict-ldap/dict-ldap-settings.c	Wed Jan 11 01:57:46 2017 +0100
@@ -167,7 +167,7 @@
 			return "Missing attributes for pattern variables";
 	}
 	array_append(&ctx->set->maps, &ctx->cur_map, 1);
-	memset(&ctx->cur_map, 0, sizeof(ctx->cur_map));
+	i_zero(&ctx->cur_map);
 	return NULL;
 }
 
@@ -284,7 +284,7 @@
 {
 	struct setting_parser_ctx ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.pool = pool;
 	ctx.set = p_new(pool, struct dict_ldap_settings, 1);
 	t_array_init(&ctx.cur_attributes, 16);
--- a/src/plugins/dict-ldap/dict-ldap.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/dict-ldap/dict-ldap.c	Wed Jan 11 01:57:46 2017 +0100
@@ -151,7 +151,7 @@
 int dict_ldap_connect(struct ldap_dict *dict, const char **error_r)
 {
 	struct ldap_client_settings set;
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.uri = dict->set->uri;
 	set.bind_dn = dict->set->bind_dn;
 	set.password = dict->set->password;
@@ -407,7 +407,7 @@
 			op->map = map;
 			attributes[0] = map->value_attribute;
 			/* build lookup */
-			memset(&input, 0, sizeof(input));
+			i_zero(&input);
 			input.base_dn = map->base_dn;
 			input.scope = map->scope_val;
 			ldap_dict_build_query(ctx, map, &values, strncmp(key, DICT_PATH_PRIVATE, strlen(DICT_PATH_PRIVATE))==0, query);
--- a/src/plugins/expire/doveadm-expire.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/expire/doveadm-expire.c	Wed Jan 11 01:57:46 2017 +0100
@@ -230,7 +230,7 @@
 	struct expire_query query;
 	bool have_or = FALSE;
 
-	memset(&query, 0, sizeof(query));
+	i_zero(&query);
 	query.before_time = (time_t)-1;
 
 	for (arg = args; arg != NULL; arg = arg->next) {
--- a/src/plugins/expire/expire-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/expire/expire-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -162,7 +162,7 @@
 	if (dict_transaction_commit(&dctx) < 0)
 		i_error("expire: dict commit failed");
 	else if (euser->expire_cache) {
-		memset(&hdr, 0, sizeof(hdr));
+		i_zero(&hdr);
 		hdr.timestamp = timestamp;
 
 		trans = mail_index_transaction_begin(box->view,
--- a/src/plugins/fts-lucene/doveadm-fts-lucene.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts-lucene/doveadm-fts-lucene.c	Wed Jan 11 01:57:46 2017 +0100
@@ -21,7 +21,7 @@
 	const struct lucene_index_record *rec;
 	bool first = TRUE;
 
-	memset(&prev_guid, 0, sizeof(prev_guid));
+	i_zero(&prev_guid);
 	index = lucene_index_init(argv[1], NULL, NULL);
 	iter = lucene_index_iter_init(index);
 	while ((rec = lucene_index_iter_next(iter)) != NULL) {
--- a/src/plugins/fts-solr/fts-backend-solr.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts-solr/fts-backend-solr.c	Wed Jan 11 01:57:46 2017 +0100
@@ -324,7 +324,7 @@
 			return field->value;
 	}
 
-	memset(&new_field, 0, sizeof(new_field));
+	i_zero(&new_field);
 	new_field.key = str_lcase(i_strdup(key));
 	new_field.value = str_new(default_pool, 128);
 	array_append(&ctx->fields, &new_field, 1);
--- a/src/plugins/fts-solr/solr-connection.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts-solr/solr-connection.c	Wed Jan 11 01:57:46 2017 +0100
@@ -122,7 +122,7 @@
 	conn->debug = debug;
 
 	if (solr_http_client == NULL) {
-		memset(&http_set, 0, sizeof(http_set));
+		i_zero(&http_set);
 		http_set.max_idle_time_msecs = 5*1000;
 		http_set.max_parallel_connections = 1;
 		http_set.max_pipelined_requests = 1;
@@ -425,7 +425,7 @@
 	const char *url;
 	int parse_ret;
 
-	memset(&solr_lookup_context, 0, sizeof(solr_lookup_context));
+	i_zero(&solr_lookup_context);
 	solr_lookup_context.result_pool = pool;
 	hash_table_create(&solr_lookup_context.mailboxes, default_pool, 0,
 			  str_hash, strcmp);
--- a/src/plugins/fts-squat/squat-trie.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts-squat/squat-trie.c	Wed Jan 11 01:57:46 2017 +0100
@@ -174,8 +174,8 @@
 {
 	trie->corrupted = FALSE;
 	node_free(trie, &trie->root);
-	memset(&trie->root, 0, sizeof(trie->root));
-	memset(&trie->hdr, 0, sizeof(trie->hdr));
+	i_zero(&trie->root);
+	i_zero(&trie->hdr);
 
 	squat_trie_close_fd(trie);
 	if (trie->file_cache != NULL)
@@ -206,7 +206,7 @@
 
 static void squat_trie_header_init(struct squat_trie *trie)
 {
-	memset(&trie->hdr, 0, sizeof(trie->hdr));
+	i_zero(&trie->hdr);
 	trie->hdr.version = SQUAT_TRIE_VERSION;
 	trie->hdr.indexid = time(NULL);
 	trie->hdr.uidvalidity = trie->uidvalidity;
@@ -1149,7 +1149,7 @@
 	if (shift_count != 0)
 		i_array_init(&ctx->cur.shifts, shift_count);
 	else
-		memset(&ctx->cur.shifts, 0, sizeof(ctx->cur.shifts));
+		i_zero(&ctx->cur.shifts);
 	return squat_trie_iterate_first(ctx);
 }
 
@@ -1509,7 +1509,7 @@
 
 	if (changed || trie->hdr.root_offset == 0) {
 		node_free(trie, &trie->root);
-		memset(&trie->root, 0, sizeof(trie->root));
+		i_zero(&trie->root);
 		trie->root.want_sequential = TRUE;
 		trie->root.unused_uids = trie->hdr.root_unused_uids;
 		trie->root.next_uid = trie->hdr.root_next_uid;
@@ -1977,7 +1977,7 @@
 	array_clear(definite_uids);
 	array_clear(maybe_uids);
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.trie = trie;
 	ctx.type = type;
 	ctx.definite_uids = definite_uids;
--- a/src/plugins/fts-squat/squat-uidlist.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts-squat/squat-uidlist.c	Wed Jan 11 01:57:46 2017 +0100
@@ -536,7 +536,7 @@
 	uidlist->fd = open(uidlist->path, O_RDWR);
 	if (uidlist->fd == -1) {
 		if (errno == ENOENT) {
-			memset(&uidlist->hdr, 0, sizeof(uidlist->hdr));
+			i_zero(&uidlist->hdr);
 			return 0;
 		}
 		i_error("open(%s) failed: %m", uidlist->path);
@@ -678,7 +678,7 @@
 	}
 	if (uidlist->locked_file_size == 0) {
 		/* write using 0 until we're finished */
-		memset(&uidlist->hdr, 0, sizeof(uidlist->hdr));
+		i_zero(&uidlist->hdr);
 		if (write_full(uidlist->fd, &uidlist->hdr,
 			       sizeof(uidlist->hdr)) < 0) {
 			i_error("write(%s) failed: %m", uidlist->path);
@@ -717,7 +717,7 @@
 	if (ctx->output->offset == 0) {
 		struct squat_uidlist_file_header hdr;
 
-		memset(&hdr, 0, sizeof(hdr));
+		i_zero(&hdr);
 		o_stream_nsend(ctx->output, &hdr, sizeof(hdr));
 	}
 	o_stream_cork(ctx->output);
@@ -934,7 +934,7 @@
 	ctx->next_uid_list_idx = 0x100;
 	o_stream_cork(ctx->output);
 
-	memset(&hdr, 0, sizeof(hdr));
+	i_zero(&hdr);
 	o_stream_nsend(ctx->output, &hdr, sizeof(hdr));
 
 	ctx->cur_block_start_offset = ctx->output->offset;
--- a/src/plugins/fts/doveadm-fts.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts/doveadm-fts.c	Wed Jan 11 01:57:46 2017 +0100
@@ -41,7 +41,7 @@
 		return -1;
 	}
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	i_array_init(&result.definite_uids, 16);
 	i_array_init(&result.maybe_uids, 16);
 	i_array_init(&result.scores, 16);
--- a/src/plugins/fts/fts-api.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts/fts-api.c	Wed Jan 11 01:57:46 2017 +0100
@@ -422,7 +422,7 @@
 	mail_index_get_header_ext(view, fts_index_get_ext_id(box),
 				  &data, &data_size);
 	if (data_size < sizeof(*hdr_r)) {
-		memset(hdr_r, 0, sizeof(*hdr_r));
+		i_zero(hdr_r);
 		ret = FALSE;
 	} else {
 		memcpy(hdr_r, data, data_size);
--- a/src/plugins/fts/fts-build-mail.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts/fts-build-mail.c	Wed Jan 11 01:57:46 2017 +0100
@@ -160,7 +160,7 @@
 
 	/* hdr->full_value is always set because we get the block from
 	   message_decoder */
-	memset(&key, 0, sizeof(key));
+	i_zero(&key);
 	key.uid = ctx->mail->uid;
 	key.type = block->part->physical_pos == 0 ?
 		FTS_BACKEND_BUILD_KEY_HDR : FTS_BACKEND_BUILD_KEY_MIME_HDR;
@@ -222,7 +222,7 @@
 	i_assert(ctx->body_parser == NULL);
 
 	*binary_body_r = FALSE;
-	memset(&key, 0, sizeof(key));
+	i_zero(&key);
 	key.uid = ctx->mail->uid;
 	key.part = part;
 
@@ -440,7 +440,7 @@
 	int ret = 0;
 
 	do {
-		memset(&block, 0, sizeof(block));
+		i_zero(&block);
 		fts_parser_more(ctx->body_parser, &block);
 		if (fts_build_body_block(ctx, &block, FALSE) < 0) {
 			ret = -1;
@@ -477,7 +477,7 @@
 		return -1;
 	}
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.update_ctx = update_ctx;
 	ctx.mail = mail;
 	if ((update_ctx->backend->flags & FTS_BACKEND_FLAG_TOKENIZED_INPUT) != 0)
--- a/src/plugins/fts/fts-parser-tika.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts/fts-parser-tika.c	Wed Jan 11 01:57:46 2017 +0100
@@ -62,7 +62,7 @@
 	}
 
 	if (tika_http_client == NULL) {
-		memset(&http_set, 0, sizeof(http_set));
+		i_zero(&http_set);
 		http_set.max_idle_time_msecs = 100;
 		http_set.max_parallel_connections = 1;
 		http_set.max_pipelined_requests = 1;
--- a/src/plugins/fts/fts-search.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts/fts-search.c	Wed Jan 11 01:57:46 2017 +0100
@@ -41,7 +41,7 @@
 	struct fts_search_level *level;
 	struct fts_result result;
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	p_array_init(&result.definite_uids, fctx->result_pool, 32);
 	p_array_init(&result.maybe_uids, fctx->result_pool, 32);
 	p_array_init(&result.scores, fctx->result_pool, 32);
@@ -166,7 +166,7 @@
 		&mailboxes_arr, TRUE);
 	array_sort(&mailboxes_arr, mailbox_cmp_fts_backend);
 
-	memset(&result, 0, sizeof(result));
+	i_zero(&result);
 	result.pool = fctx->result_pool;
 
 	level = array_append_space(&fctx->levels);
--- a/src/plugins/fts/xml2text.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/fts/xml2text.c	Wed Jan 11 01:57:46 2017 +0100
@@ -18,7 +18,7 @@
 	parser = fts_parser_html.try_init(NULL, "text/html", NULL);
 	i_assert(parser != NULL);
 
-	memset(&block, 0, sizeof(block));
+	i_zero(&block);
 	while ((ret = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
 		block.data = buf;
 		block.size = ret;
--- a/src/plugins/imap-acl/imap-acl-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/imap-acl/imap-acl-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -254,7 +254,7 @@
 
 	if (!seen_positive_owner && username != NULL && add_default) {
 		/* no positive owner rights returned, write default ACLs */
-		memset(&rights, 0, sizeof(rights));
+		i_zero(&rights);
 		if (!convert_owner) {
 			rights.id_type = ACL_ID_OWNER;
 		} else {
@@ -572,7 +572,7 @@
 		return TRUE;
 	}
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	if (*identifier == '-') {
 		negative = TRUE;
 		identifier++;
@@ -655,7 +655,7 @@
 		return TRUE;
 	}
 
-	memset(&update, 0, sizeof(update));
+	i_zero(&update);
 	if (*identifier != '-')
 		update.modify_mode = ACL_MODIFY_MODE_CLEAR;
 	else {
--- a/src/plugins/last-login/last-login-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/last-login/last-login-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -93,7 +93,7 @@
 	if (dict_value == NULL || dict_value[0] == '\0')
 		return;
 
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.username = user->username;
 	set.base_dir = user->set->base_dir;
 	if (mail_user_get_home(user, &set.home_dir) <= 0)
--- a/src/plugins/mail-crypt/doveadm-mail-crypt.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/mail-crypt/doveadm-mail-crypt.c	Wed Jan 11 01:57:46 2017 +0100
@@ -72,7 +72,7 @@
 	if ((cur_ioloop_ctx = io_loop_get_current_context(current_ioloop)) != NULL)
 		io_loop_context_deactivate(cur_ioloop_ctx);
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = old_input->module;
 	input.service = old_input->service;
 	input.username = dest_username;
@@ -453,7 +453,7 @@
 		struct mailbox *box =
 			mailbox_alloc(ns->list, "INBOX", MAILBOX_FLAG_READONLY);
 		struct mail_attribute_value value;
-		memset(&value, 0, sizeof(value));
+		i_zero(&value);
 		if (mailbox_open(box) < 0) {
 			i_error("mailbox_open(%s) failed: %s",
 				mailbox_get_vname(box),
@@ -529,7 +529,7 @@
 			mailbox_transaction_begin(box, 0);
 
 		struct mail_attribute_value value;
-		memset(&value, 0, sizeof(value));
+		i_zero(&value);
 		array_clear(&ids);
 
 		/* get active ID */
@@ -587,7 +587,7 @@
 	struct mcp_cmd_context *ctx =
 		(struct mcp_cmd_context *)_ctx;
 	struct mcp_key_iter_ctx iter_ctx;
-	memset(&iter_ctx, 0, sizeof(iter_ctx));
+	i_zero(&iter_ctx);
 	iter_ctx.pool = _ctx->pool;
 	p_array_init(&iter_ctx.keys, _ctx->pool, 8);
 
@@ -806,7 +806,7 @@
 			dcrypt_key_unref_private(&key);
 			if (ret == -1) break;
 
-			memset(&value, 0, sizeof(value));
+			i_zero(&value);
 			value.value = str_c(newkey);
 
 			/* and store it */
--- a/src/plugins/mail-crypt/mail-crypt-acl-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/mail-crypt/mail-crypt-acl-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -142,7 +142,7 @@
 	if ((cur_ioloop_ctx = io_loop_get_current_context(current_ioloop)) != NULL)
 		io_loop_context_deactivate(cur_ioloop_ctx);
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = old_input->module;
 	input.service = old_input->service;
 	input.username = dest_username;
--- a/src/plugins/mail-crypt/mail-crypt-global-key.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/mail-crypt/mail-crypt-global-key.c	Wed Jan 11 01:57:46 2017 +0100
@@ -134,7 +134,7 @@
 
 void mail_crypt_global_keys_init(struct mail_crypt_global_keys *global_keys_r)
 {
-	memset(global_keys_r, 0, sizeof(*global_keys_r));
+	i_zero(global_keys_r);
 	i_array_init(&global_keys_r->private_keys, 4);
 }
 
--- a/src/plugins/mail-crypt/mail-crypt-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/mail-crypt/mail-crypt-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -77,7 +77,7 @@
 		timeout_remove(&cache->to);
 	if (cache->input != NULL)
 		i_stream_unref(&cache->input);
-	memset(cache, 0, sizeof(*cache));
+	i_zero(cache);
 }
 
 static struct istream *
--- a/src/plugins/mail-crypt/mail-crypt-pluginenv.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/mail-crypt/mail-crypt-pluginenv.c	Wed Jan 11 01:57:46 2017 +0100
@@ -20,7 +20,7 @@
 	struct master_service_settings_output output;
 	const char *error;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.roots = set_roots;
 	input.module = "fs-crypt";
 	input.service = "fs-crypt";
--- a/src/plugins/mail-crypt/test-mail-global-key.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/mail-crypt/test-mail-global-key.c	Wed Jan 11 01:57:46 2017 +0100
@@ -55,7 +55,7 @@
 	test_begin("try_load_keys");
 
 	struct mail_crypt_global_keys keys;
-	memset(&keys, 0, sizeof(keys));
+	i_zero(&keys);
 	mail_crypt_global_keys_init(&keys);
 
 	const char *set_prefix = "mail_crypt_global";
@@ -103,7 +103,7 @@
 
 	/* this should not crash */
 	struct mail_crypt_global_keys keys;
-	memset(&keys, 0, sizeof(keys));
+	i_zero(&keys);
 	test_assert(mail_crypt_global_key_find(&keys, "423423423423") == NULL);
 
 	test_end();
--- a/src/plugins/mail-crypt/test-mail-key.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/mail-crypt/test-mail-key.c	Wed Jan 11 01:57:46 2017 +0100
@@ -115,7 +115,7 @@
 
 	int ret;
 
-	memset(&attr_value, 0, sizeof(attr_value));
+	i_zero(&attr_value);
 	attr_value.value = value;
 
 	if ((ret = mailbox_attribute_set(t, attr_type,
--- a/src/plugins/pop3-migration/pop3-migration-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/pop3-migration/pop3-migration-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -185,7 +185,7 @@
 	struct sha1_ctxt sha1_ctx;
 	struct pop3_hdr_context hdr_ctx;
 
-	memset(&hdr_ctx, 0, sizeof(hdr_ctx));
+	i_zero(&hdr_ctx);
 	/* hide headers that might change or be different in IMAP vs. POP3 */
 	input = i_stream_create_header_filter(input, HEADER_FILTER_HIDE_BODY |
 				HEADER_FILTER_EXCLUDE | HEADER_FILTER_NO_CR,
@@ -770,7 +770,7 @@
 		if (pop3_migration_uidl_sync_if_needed(_mail->box) < 0)
 			return -1;
 
-		memset(&map_key, 0, sizeof(map_key));
+		i_zero(&map_key);
 		map_key.uid = _mail->uid;
 		map = array_bsearch(&mbox->imap_msg_map, &map_key,
 				    imap_msg_map_uid_cmp);
--- a/src/plugins/push-notification/push-notification-driver-ox.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/push-notification/push-notification-driver-ox.c	Wed Jan 11 01:57:46 2017 +0100
@@ -63,7 +63,7 @@
     if (ox_global->http_client == NULL) {
         /* this is going to use the first user's settings, but these are
            unlikely to change between users so it shouldn't matter much. */
-        memset(&http_set, 0, sizeof(http_set));
+        i_zero(&http_set);
         http_set.debug = user->mail_debug;
         http_set.max_attempts = config->http_max_retries+1;
         http_set.request_timeout_msecs = config->http_timeout_msecs;
--- a/src/plugins/push-notification/push-notification-event-flagsclear.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/push-notification/push-notification-event-flagsclear.c	Wed Jan 11 01:57:46 2017 +0100
@@ -18,7 +18,7 @@
 
 static void *push_notification_event_flagsclear_default_config(void)
 {
-    memset(&default_config, 0, sizeof(default_config));
+    i_zero(&default_config);
 
     return &default_config;
 }
--- a/src/plugins/push-notification/push-notification-event-flagsset.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/push-notification/push-notification-event-flagsset.c	Wed Jan 11 01:57:46 2017 +0100
@@ -18,7 +18,7 @@
 
 static void *push_notification_event_flagsset_default_config(void)
 {
-    memset(&default_config, 0, sizeof(default_config));
+    i_zero(&default_config);
 
     return &default_config;
 }
--- a/src/plugins/push-notification/push-notification-event-messageappend.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/push-notification/push-notification-event-messageappend.c	Wed Jan 11 01:57:46 2017 +0100
@@ -20,7 +20,7 @@
 
 static void *push_notification_event_messageappend_default_config(void)
 {
-    memset(&default_config, 0, sizeof(default_config));
+    i_zero(&default_config);
 
     return &default_config;
 }
--- a/src/plugins/push-notification/push-notification-event-messagenew.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/push-notification/push-notification-event-messagenew.c	Wed Jan 11 01:57:46 2017 +0100
@@ -23,7 +23,7 @@
 
 static void *push_notification_event_messagenew_default_config(void)
 {
-    memset(&default_config, 0, sizeof(default_config));
+    i_zero(&default_config);
 
     return &default_config;
 }
--- a/src/plugins/quota-clone/quota-clone-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota-clone/quota-clone-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -197,7 +197,7 @@
 		return;
 	}
 
-	memset(&dict_set, 0, sizeof(dict_set));
+	i_zero(&dict_set);
 	dict_set.username = user->username;
 	dict_set.base_dir = user->set->base_dir;
 	(void)mail_user_get_home(user, &dict_set.home_dir);
--- a/src/plugins/quota/doveadm-quota.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota/doveadm-quota.c	Wed Jan 11 01:57:46 2017 +0100
@@ -99,7 +99,7 @@
 		return -1;
 	}
 
-	memset(&trans, 0, sizeof(trans));
+	i_zero(&trans);
 	trans.quota = quser->quota;
 	trans.recalculate = QUOTA_RECALCULATE_FORCED;
 
--- a/src/plugins/quota/quota-count.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota/quota-count.c	Wed Jan 11 01:57:46 2017 +0100
@@ -264,7 +264,7 @@
 	/* reset the vsize header first */
 	trans = mail_index_transaction_begin(box->view,
 				MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL);
-	memset(&vsize_hdr, 0, sizeof(vsize_hdr));
+	i_zero(&vsize_hdr);
 	mail_index_update_header_ext(trans, box->vsize_hdr_ext_id,
 				     0, &vsize_hdr, sizeof(vsize_hdr));
 	if (mail_index_transaction_commit(&trans) < 0)
--- a/src/plugins/quota/quota-dict.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota/quota-dict.c	Wed Jan 11 01:57:46 2017 +0100
@@ -84,7 +84,7 @@
 
 	/* FIXME: we should use 64bit integer as datatype instead but before
 	   it can actually be used don't bother */
-	memset(&set, 0, sizeof(set));
+	i_zero(&set);
 	set.username = username;
 	set.base_dir = _root->quota->user->set->base_dir;
 	if (mail_user_get_home(_root->quota->user, &set.home_dir) <= 0)
--- a/src/plugins/quota/quota-status.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota/quota-status.c	Wed Jan 11 01:57:46 2017 +0100
@@ -90,7 +90,7 @@
 		return;
 	}
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.username = client->recipient;
 
 	ret = mail_storage_service_lookup_next(storage_service, &input,
@@ -193,7 +193,7 @@
 		MAIL_STORAGE_SERVICE_FLAG_ENABLE_CORE_DUMPS |
 		MAIL_STORAGE_SERVICE_FLAG_NO_CHDIR);
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.service = "quota-status";
 	input.module = "mail";
 	input.username = "";
--- a/src/plugins/quota/quota-util.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota/quota-util.c	Wed Jan 11 01:57:46 2017 +0100
@@ -326,7 +326,7 @@
 		q = rule_def;
 	}
 
-	memset(&rule, 0, sizeof(rule));
+	i_zero(&rule);
 	ret = quota_rule_parse_limits(root_set, &rule, t_strdup_until(q, p),
 				      rule_def, FALSE, error_r);
 	if (ret < 0)
--- a/src/plugins/quota/quota.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota/quota.c	Wed Jan 11 01:57:46 2017 +0100
@@ -740,7 +740,7 @@
 	if (root->limit_set_dict == NULL) {
 		struct dict_settings set;
 
-		memset(&set, 0, sizeof(set));
+		i_zero(&set);
 		set.username = root->quota->user->username;
 		set.base_dir = root->quota->user->set->base_dir;
 		if (mail_user_get_home(root->quota->user, &set.home_dir) <= 0)
--- a/src/plugins/quota/test-quota-util.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/quota/test-quota-util.c	Wed Jan 11 01:57:46 2017 +0100
@@ -56,7 +56,7 @@
 		if (tests[i].new_size != 1)
 			continue;
 
-		memset(&ctx, 0, sizeof(ctx));
+		i_zero(&ctx);
 		ctx.count_used = tests[i].transaction_diff;
 		if (tests[i].initial_size > tests[i].limit)
 			ctx.count_over = tests[i].initial_size - tests[i].limit;
@@ -71,7 +71,7 @@
 
 	test_begin("quota transcation is over (bytes)");
 	for (i = 0; i < N_ELEMENTS(tests); i++) {
-		memset(&ctx, 0, sizeof(ctx));
+		i_zero(&ctx);
 		ctx.count_ceil = 1;
 		ctx.bytes_used = tests[i].transaction_diff;
 		if (tests[i].initial_size > tests[i].limit)
--- a/src/plugins/stats/mail-stats-fill.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/stats/mail-stats-fill.c	Wed Jan 11 01:57:46 2017 +0100
@@ -115,7 +115,7 @@
 	static struct rusage prev_usage;
 	struct rusage usage;
 
-	memset(stats_r, 0, sizeof(*stats_r));
+	i_zero(stats_r);
 	/* cputime */
 	if (getrusage(RUSAGE_SELF, &usage) < 0) {
 		if (!getrusage_broken) {
--- a/src/plugins/virtual/virtual-config.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/virtual/virtual-config.c	Wed Jan 11 01:57:46 2017 +0100
@@ -221,7 +221,7 @@
 	struct virtual_backend_box *const *bboxes;
 	unsigned int i, count;
 
-	memset(&pattern, 0, sizeof(pattern));
+	i_zero(&pattern);
 	bboxes = array_get_modifiable(&mbox->backend_boxes, &count);
 	p_array_init(&mbox->list_include_patterns, ctx->pool, count);
 	p_array_init(&mbox->list_exclude_patterns, ctx->pool, count);
@@ -491,7 +491,7 @@
 		return -1;
 	}
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 	ctx.sep = mail_namespaces_get_root_sep(storage->user->namespaces);
 	ctx.mbox = mbox;
 	ctx.pool = mbox->box.pool;
--- a/src/plugins/virtual/virtual-mail.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/virtual/virtual-mail.c	Wed Jan 11 01:57:46 2017 +0100
@@ -184,7 +184,7 @@
 			      mbox->virtual_ext_id, &data, NULL);
 	memcpy(&vmail->cur_vrec, data, sizeof(vmail->cur_vrec));
 
-	memset(&vmail->imail.data, 0, sizeof(vmail->imail.data));
+	i_zero(&vmail->imail.data);
 	p_clear(vmail->imail.mail.data_pool);
 
 	vmail->imail.data.seq = seq;
--- a/src/plugins/virtual/virtual-search.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/virtual/virtual-search.c	Wed Jan 11 01:57:46 2017 +0100
@@ -71,7 +71,7 @@
 	const void *data;
 	int result;
 
-	memset(&srec, 0, sizeof(srec));
+	i_zero(&srec);
 	while (index_storage_search_next_update_seq(ctx)) {
 		result = mail_search_get_result(ctx);
 		i_assert(result != 0);
--- a/src/plugins/virtual/virtual-sync.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/virtual/virtual-sync.c	Wed Jan 11 01:57:46 2017 +0100
@@ -277,8 +277,8 @@
 	mailbox_pos = sizeof(ext_hdr);
 	name_pos = mailbox_pos + sizeof(mailbox) * count;
 
-	memset(&ext_hdr, 0, sizeof(ext_hdr));
-	memset(&mailbox, 0, sizeof(mailbox));
+	i_zero(&ext_hdr);
+	i_zero(&mailbox);
 
 	ext_hdr.change_counter = ++ctx->mbox->prev_change_counter;
 	ext_hdr.mailbox_count = count;
@@ -488,7 +488,7 @@
 		mailbox_search_result_save(search_ctx, result_flags);
 
 	/* add the found UIDs to uidmap. virtual_uid gets assigned later. */
-	memset(&uidmap, 0, sizeof(uidmap));
+	i_zero(&uidmap);
 	array_clear(&bbox->uids);
 	while (mailbox_search_next(search_ctx, &mail)) {
 		uidmap.real_uid = mail->uid;
@@ -591,7 +591,7 @@
 	src = dest + add_count;
 
 	/* add/move the UIDs to their correct positions */
-	memset(&rec, 0, sizeof(rec));
+	i_zero(&rec);
 	rec.rec.mailbox_id = bbox->mailbox_id;
 	for (i = 0; i < uid_count; i++) {
 		add_uid = added_uids[i].seq1;
@@ -653,7 +653,7 @@
 
 	mail_index_lookup_uid(ctx->sync_view, vseq, &vuid);
 
-	memset(&uidmap, 0, sizeof(uidmap));
+	i_zero(&uidmap);
 	uidmap.real_uid = real_uid;
 	uidmap.virtual_uid = vuid;
 	array_append(&bbox->uids, &uidmap, 1);
@@ -1075,7 +1075,7 @@
 		return;
 	}
 
-	memset(&mailbox, 0, sizeof(mailbox));
+	i_zero(&mailbox);
 	mailbox.uid_validity = bbox->sync_uid_validity;
 	mailbox.highest_modseq = bbox->ondisk_highest_modseq;
 	mailbox.next_uid = bbox->sync_next_uid;
@@ -1244,7 +1244,7 @@
 
 	/* create real mailbox uid -> virtual uid mapping and expunge
 	   messages no longer matching the search rule */
-	memset(&add_rec, 0, sizeof(add_rec));
+	i_zero(&add_rec);
 	bbox = NULL;
 	for (i = 0; i < messages; i++) {
 		vseq = vmails[i].vseq;
@@ -1312,7 +1312,7 @@
 
 	/* if there are any mailboxes we didn't yet sync, add new messages in
 	   them */
-	memset(&add_rec, 0, sizeof(add_rec));
+	i_zero(&add_rec);
 	bboxes = array_get(&ctx->mbox->backend_boxes, &count);
 	for (i = 0; i < count; i++) {
 		if (bboxes[i]->sync_seen)
@@ -1481,7 +1481,7 @@
 					 (uint32_t)-1, &seq, &seq2))
 		return 0;
 
-	memset(&uidmap, 0, sizeof(uidmap));
+	i_zero(&uidmap);
 	for (; seq <= seq2; seq++) {
 		mail_index_lookup_ext(ctx->sync_view, seq, virtual_ext_id,
 				      &data, NULL);
--- a/src/plugins/zlib/zlib-plugin.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/plugins/zlib/zlib-plugin.c	Wed Jan 11 01:57:46 2017 +0100
@@ -70,7 +70,7 @@
 		timeout_remove(&cache->to);
 	if (cache->input != NULL)
 		i_stream_unref(&cache->input);
-	memset(cache, 0, sizeof(*cache));
+	i_zero(cache);
 }
 
 static struct istream *
--- a/src/pop3-login/pop3-proxy.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/pop3-login/pop3-proxy.c	Wed Jan 11 01:57:46 2017 +0100
@@ -55,7 +55,7 @@
 	}
 
 	i_assert(client->common.proxy_sasl_client == NULL);
-	memset(&sasl_set, 0, sizeof(sasl_set));
+	i_zero(&sasl_set);
 	sasl_set.authid = client->common.proxy_master_user != NULL ?
 		client->common.proxy_master_user : client->common.proxy_user;
 	sasl_set.authzid = client->common.proxy_user;
--- a/src/pop3/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/pop3/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -136,7 +136,7 @@
 	buffer_t *input_buf;
 	const char *value, *error, *input_base64;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = input.service = "pop3";
 	input.username = username != NULL ? username : getenv("USER");
 	if (input.username == NULL && IS_STANDALONE())
@@ -165,7 +165,7 @@
 	const char *error;
 	buffer_t input_buf;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = input.service = "pop3";
 	input.local_ip = client->auth_req.local_ip;
 	input.remote_ip = client->auth_req.remote_ip;
@@ -218,7 +218,7 @@
 	const char *username = NULL, *auth_socket_path = "auth-master";
 	int c;
 
-	memset(&login_set, 0, sizeof(login_set));
+	i_zero(&login_set);
 	login_set.postlogin_timeout_secs = MASTER_POSTLOGIN_TIMEOUT_DEFAULT;
 
 	if (IS_STANDALONE() && getuid() == 0 &&
--- a/src/replication/replicator/replicator-queue-auth.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/replication/replicator/replicator-queue-auth.c	Wed Jan 11 01:57:46 2017 +0100
@@ -19,7 +19,7 @@
 	auth_conn = auth_master_init(auth_socket_path,
 				     AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT);
 
-	memset(&user_info, 0, sizeof(user_info));
+	i_zero(&user_info);
 	user_info.service = REPLICATOR_AUTH_SERVICE_NAME;
 
 	/* add all users into replication queue, so that we can start doing
--- a/src/replication/replicator/replicator-queue.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/replication/replicator/replicator-queue.c	Wed Jan 11 01:57:46 2017 +0100
@@ -310,7 +310,7 @@
 	if (str_array_length(args) < 7)
 		return -1;
 
-	memset(&tmp_user, 0, sizeof(tmp_user));
+	i_zero(&tmp_user);
 	username = args[0];
 	state = t_strdup_noconst(args[6]);
 	if (username[0] == '\0' ||
--- a/src/stats/client-export.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/stats/client-export.c	Wed Jan 11 01:57:46 2017 +0100
@@ -70,7 +70,7 @@
 	   since=<timestamp>
 	   connected
 	*/
-	memset(filter_r, 0, sizeof(*filter_r));
+	i_zero(filter_r);
 	for (; *args != NULL; args++) {
 		if (strncmp(*args, "user=", 5) == 0)
 			filter_r->user = p_strdup(pool, *args + 5);
--- a/src/stats/client-reset.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/stats/client-reset.c	Wed Jan 11 01:57:46 2017 +0100
@@ -15,7 +15,7 @@
 	g->num_logins = 0;
 	g->num_cmds = 0;
 	g->reset_timestamp = ioloop_time;
-	memset(&(g->last_update), 0, sizeof(g->last_update));
+	i_zero(&g->last_update);
 	o_stream_nsend_str(client->output, "OK\n");
 	return 0;
 }
--- a/src/stats/main.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/stats/main.c	Wed Jan 11 01:57:46 2017 +0100
@@ -31,7 +31,7 @@
 {
 	struct module_dir_load_settings mod_set;
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = DOVECOT_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 
--- a/src/util/script-login.c	Tue Jan 10 19:23:30 2017 +0200
+++ b/src/util/script-login.c	Wed Jan 11 01:57:46 2017 +0100
@@ -89,7 +89,7 @@
 		i_fatal("Missing input fields");
 
 	i = 0;
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "mail"; /* need to get mail_uid, mail_gid */
 	input.service = "script-login";
 	(void)net_addr2ip(args[i++], &input.local_ip);