From 131ea97457b4e6e6b3d34d080f8e67a2f64ba2dc Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@dovecot.fi>
Date: Sat, 24 Dec 2016 02:56:01 +0100
Subject: [PATCH] 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
---
 src/lib-sieve-tool/sieve-tool.c                      |  2 +-
 src/lib-sieve/plugins/date/tst-date.c                |  2 +-
 src/lib-sieve/plugins/enotify/cmd-notify.c           |  6 +++---
 src/lib-sieve/plugins/enotify/ext-enotify-common.c   | 10 +++++-----
 src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c   |  2 +-
 src/lib-sieve/plugins/enotify/mailto/uri-mailto.c    |  2 +-
 .../plugins/imap4flags/ext-imap4flags-common.c       |  2 +-
 src/lib-sieve/plugins/mailbox/tst-mailboxexists.c    |  2 +-
 src/lib-sieve/plugins/metadata/tst-metadataexists.c  |  2 +-
 src/lib-sieve/plugins/vacation/cmd-vacation.c        |  2 +-
 src/lib-sieve/sieve-actions.c                        |  2 +-
 src/lib-sieve/sieve-address-source.c                 |  2 +-
 src/lib-sieve/sieve-address.c                        | 12 ++++++------
 src/lib-sieve/sieve-message.c                        |  6 +++---
 src/lib-sieve/sieve-plugins.c                        |  2 +-
 src/lib-sieve/sieve.c                                |  6 +++---
 src/lib-sieve/storage/dict/sieve-dict-storage.c      |  2 +-
 src/lib-sieve/storage/ldap/sieve-ldap-db.c           |  6 +++---
 src/lib-sieve/tst-address.c                          |  2 +-
 src/lib-sieve/tst-exists.c                           |  2 +-
 src/lib-sieve/tst-header.c                           |  2 +-
 src/managesieve-login/managesieve-proxy.c            |  2 +-
 src/managesieve/main.c                               |  6 +++---
 src/managesieve/managesieve-client.c                 |  2 +-
 src/managesieve/managesieve-commands.c               |  2 +-
 src/plugins/doveadm-sieve/doveadm-sieve-sync.c       |  2 +-
 src/plugins/imapsieve/imap-sieve-storage.c           |  2 +-
 src/plugins/imapsieve/imap-sieve.c                   | 12 ++++++------
 src/plugins/lda-sieve/lda-sieve-plugin.c             | 10 +++++-----
 src/sieve-tools/sieve-filter.c                       | 10 +++++-----
 src/sieve-tools/sieve-test.c                         |  6 +++---
 src/testsuite/testsuite-mailstore.c                  |  2 +-
 src/testsuite/testsuite-message.c                    |  4 ++--
 src/testsuite/testsuite-script.c                     |  4 ++--
 src/testsuite/testsuite.c                            |  4 ++--
 35 files changed, 72 insertions(+), 72 deletions(-)

diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index a7aa603dc..f65a1c3ba 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -252,7 +252,7 @@ struct sieve_instance *sieve_tool_init_finish
 		storage_service_flags |=
 			MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES;
 
-	memset(&service_input, 0, sizeof(service_input));
+	i_zero(&service_input);
 	service_input.module = "mail";
 	service_input.service = tool->name;
 	service_input.username = username;
diff --git a/src/lib-sieve/plugins/date/tst-date.c b/src/lib-sieve/plugins/date/tst-date.c
index 7bdd3d160..8fffa5cde 100644
--- a/src/lib-sieve/plugins/date/tst-date.c
+++ b/src/lib-sieve/plugins/date/tst-date.c
@@ -397,7 +397,7 @@ static int tst_date_operation_execute
 		int opt;
 
 		/* Optional operands */
-		memset(&svmos, 0, sizeof(svmos));
+		i_zero(&svmos);
 		if ( (opt=sieve_message_opr_optional_read
 			(renv, address, &opt_code, &ret, NULL, &mcht, &cmp, &svmos)) < 0 )
 			return ret;
diff --git a/src/lib-sieve/plugins/enotify/cmd-notify.c b/src/lib-sieve/plugins/enotify/cmd-notify.c
index 0edc820b7..aa4f59e56 100644
--- a/src/lib-sieve/plugins/enotify/cmd-notify.c
+++ b/src/lib-sieve/plugins/enotify/cmd-notify.c
@@ -512,7 +512,7 @@ static int act_notify_check_duplicate
 	if ( nmth_def->action_check_duplicates == NULL )
 		return 0;
 
-	memset(&nenv, 0, sizeof(nenv));
+	i_zero(&nenv);
 	nenv.svinst = renv->svinst;
 	nenv.method = nact->method;
 	nenv.ehandler = sieve_prefix_ehandler_create
@@ -544,7 +544,7 @@ static void act_notify_print
 		if ( method->def->action_print != NULL ) {
 			struct sieve_enotify_print_env penv;
 
-			memset(&penv, 0, sizeof(penv));
+			i_zero(&penv);
 			penv.result_penv = rpenv;
 
 			method->def->action_print(&penv, act);
@@ -566,7 +566,7 @@ static int act_notify_commit
 
 	if ( method->def != NULL && method->def->action_execute != NULL )	{
 		/* Compose log structure */
-		memset(&nenv, 0, sizeof(nenv));
+		i_zero(&nenv);
 		nenv.svinst = aenv->svinst;
 		nenv.flags = aenv->flags;
 		nenv.method = method;
diff --git a/src/lib-sieve/plugins/enotify/ext-enotify-common.c b/src/lib-sieve/plugins/enotify/ext-enotify-common.c
index 5502ac502..7e8b6ae95 100644
--- a/src/lib-sieve/plugins/enotify/ext-enotify-common.c
+++ b/src/lib-sieve/plugins/enotify/ext-enotify-common.c
@@ -324,7 +324,7 @@ static int _ext_enotify_option_check
 	int result = 1;
 
 	/* Compose log structure */
-	memset(&nenv, 0, sizeof(nenv));
+	i_zero(&nenv);
 	nenv.svinst = optn_context->svinst;
 	nenv.method = method;
 	nenv.ehandler = sieve_prefix_ehandler_create
@@ -402,7 +402,7 @@ bool ext_enotify_compile_check_arguments
 	if ( method->def == NULL ) return TRUE;
 
 	/* Compose log structure */
-	memset(&nenv, 0, sizeof(nenv));
+	i_zero(&nenv);
 	nenv.svinst = svinst;
 	nenv.method = method;
 
@@ -501,7 +501,7 @@ bool ext_enotify_runtime_method_validate
 	if ( method->def != NULL && method->def->runtime_check_uri != NULL ) {
 		struct sieve_enotify_env nenv;
 
-		memset(&nenv, 0, sizeof(nenv));
+		i_zero(&nenv);
 		nenv.svinst = renv->svinst;
 		nenv.method = method;
 		nenv.ehandler = sieve_prefix_ehandler_create
@@ -565,7 +565,7 @@ const char *ext_enotify_runtime_get_method_capability
 		method->def->runtime_get_method_capability != NULL ) {
 		struct sieve_enotify_env nenv;
 
-		memset(&nenv, 0, sizeof(nenv));
+		i_zero(&nenv);
 		nenv.svinst = renv->svinst;
 		nenv.method = method;
 		nenv.ehandler = sieve_prefix_ehandler_create
@@ -599,7 +599,7 @@ int ext_enotify_runtime_check_operands
 		struct sieve_enotify_env nenv;
 		int result = SIEVE_EXEC_OK;
 
-		memset(&nenv, 0, sizeof(nenv));
+		i_zero(&nenv);
 		nenv.svinst = renv->svinst;
 		nenv.method = method;
 		nenv.ehandler = sieve_prefix_ehandler_create
diff --git a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
index d1c48f6ce..68aa127af 100644
--- a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
+++ b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
@@ -484,7 +484,7 @@ static int ntfy_mailto_send
 		from_smtp = sieve_message_get_sender(nenv->msgctx);
 		if ( from_smtp == NULL ) {
 			/* "<>" */
-			memset(&env_from, 0, sizeof(env_from));
+			i_zero(&env_from);
 			env_from.type = SIEVE_ADDRESS_SOURCE_EXPLICIT;
 		}
 	}
diff --git a/src/lib-sieve/plugins/enotify/mailto/uri-mailto.c b/src/lib-sieve/plugins/enotify/mailto/uri-mailto.c
index 094a4f22e..170e36b79 100644
--- a/src/lib-sieve/plugins/enotify/mailto/uri-mailto.c
+++ b/src/lib-sieve/plugins/enotify/mailto/uri-mailto.c
@@ -551,7 +551,7 @@ bool uri_mailto_validate
 {
 	struct uri_mailto_parser parser;
 
-	memset(&parser, 0, sizeof(parser));
+	i_zero(&parser);
 	parser.ehandler = ehandler;
 	parser.max_recipients = max_recipients;
 	parser.max_headers = max_headers;
diff --git a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
index 9c88aeba8..6932c5cb1 100644
--- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
+++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
@@ -309,7 +309,7 @@ bool sieve_ext_imap4flags_flag_is_valid(const char *flag)
 static void ext_imap4flags_iter_clear
 (struct ext_imap4flags_iter *iter)
 {
-	memset(iter, 0, sizeof(*iter));
+	i_zero(iter);
 }
 
 void ext_imap4flags_iter_init
diff --git a/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c b/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
index 8d538111b..43bf5cca7 100644
--- a/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
+++ b/src/lib-sieve/plugins/mailbox/tst-mailboxexists.c
@@ -104,7 +104,7 @@ static bool tst_mailboxexists_validate
 		return FALSE;
 
 	aarg = arg;
-	memset(&valctx, 0, sizeof(valctx));
+	i_zero(&valctx);
 	valctx.valdtr = valdtr;
 	valctx.tst = tst;
 
diff --git a/src/lib-sieve/plugins/metadata/tst-metadataexists.c b/src/lib-sieve/plugins/metadata/tst-metadataexists.c
index 79685264b..2f34d5fa2 100644
--- a/src/lib-sieve/plugins/metadata/tst-metadataexists.c
+++ b/src/lib-sieve/plugins/metadata/tst-metadataexists.c
@@ -175,7 +175,7 @@ static bool tst_metadataexists_validate
 		return FALSE;
 
 	aarg = arg;
-	memset(&valctx, 0, sizeof(valctx));
+	i_zero(&valctx);
 	valctx.valdtr = valdtr;
 	valctx.tst = tst;
 
diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c
index e67312711..930e21c44 100644
--- a/src/lib-sieve/plugins/vacation/cmd-vacation.c
+++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c
@@ -855,7 +855,7 @@ static inline bool _contains_my_address
 
 					i_assert(addr->mailbox != NULL);
 
-					memset(&svaddr, 0, sizeof(svaddr));
+					i_zero(&svaddr);
 					svaddr.local_part = addr->mailbox;
 					svaddr.domain = addr->domain;
 
diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c
index 619088604..45d63defe 100644
--- a/src/lib-sieve/sieve-actions.c
+++ b/src/lib-sieve/sieve-actions.c
@@ -375,7 +375,7 @@ static bool act_store_mailbox_open
 		return FALSE;
 	}
 
-	memset(&save_ctx, 0, sizeof(save_ctx));
+	i_zero(&save_ctx);
 	save_ctx.user = aenv->scriptenv->user;
 	save_ctx.lda_mailbox_autocreate = aenv->scriptenv->mailbox_autocreate;
 	save_ctx.lda_mailbox_autosubscribe = aenv->scriptenv->mailbox_autosubscribe;
diff --git a/src/lib-sieve/sieve-address-source.c b/src/lib-sieve/sieve-address-source.c
index 70cd8a83e..2838fdfcf 100644
--- a/src/lib-sieve/sieve-address-source.c
+++ b/src/lib-sieve/sieve-address-source.c
@@ -17,7 +17,7 @@ bool sieve_address_source_parse
 {
 	size_t val_len;
 
-	memset(asrc, 0, sizeof(*asrc));
+	i_zero(asrc);
 
 	value = t_str_trim(value, "\t ");
 	value = t_str_lcase(value);
diff --git a/src/lib-sieve/sieve-address.c b/src/lib-sieve/sieve-address.c
index 703a73837..c751c7d0b 100644
--- a/src/lib-sieve/sieve-address.c
+++ b/src/lib-sieve/sieve-address.c
@@ -434,7 +434,7 @@ bool sieve_rfc2822_mailbox_validate(const char *address, const char **error_r)
 		return FALSE;
 	}
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 
 	ctx.local_part = t_str_new(128);
 	ctx.domain = t_str_new(128);
@@ -465,7 +465,7 @@ const char *sieve_rfc2822_mailbox_normalize
 
 	if ( address == NULL ) return NULL;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 
 	ctx.local_part = t_str_new(128);
 	ctx.domain = t_str_new(128);
@@ -481,7 +481,7 @@ const char *sieve_rfc2822_mailbox_normalize
 
 	(void)str_lcase(str_c_modifiable(ctx.domain));
 
-	memset(&addr, 0, sizeof(addr));
+	i_zero(&addr);
 	addr.local_part = str_c(ctx.local_part);
 	addr.domain = str_c(ctx.domain);
 	return sieve_address_to_string(&addr);
@@ -497,7 +497,7 @@ const char *sieve_address_normalize
 	struct sieve_message_address_parser ctx;
 	struct sieve_address addr;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 
 	ctx.local_part = t_str_new(128);
 	ctx.domain = t_str_new(128);
@@ -513,7 +513,7 @@ const char *sieve_address_normalize
 	*error_r = NULL;
 	(void)str_lcase(str_c_modifiable(ctx.domain));
 
-	memset(&addr, 0, sizeof(addr));
+	i_zero(&addr);
 	addr.local_part = str_c(ctx.local_part);
 	addr.domain = str_c(ctx.domain);
 	return sieve_address_to_string(&addr);
@@ -524,7 +524,7 @@ bool sieve_address_validate
 {
 	struct sieve_message_address_parser ctx;
 
-	memset(&ctx, 0, sizeof(ctx));
+	i_zero(&ctx);
 
 	ctx.local_part = ctx.domain = ctx.str = t_str_new(128);
 	ctx.error = t_str_new(128);
diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index ff9f28368..bff979499 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -914,7 +914,7 @@ void sieve_message_part_get_data
 (struct sieve_message_part *mpart,
 	struct sieve_message_part_data *data, bool text)
 {
-	memset(data, 0, sizeof(*data));
+	i_zero(data);
 	data->content_type = mpart->content_type;
 	data->content_disposition = mpart->content_disposition;
 
@@ -1201,7 +1201,7 @@ static int sieve_message_parts_add_missing
 		hdr_content = t_str_new(512);
 		hparser_flags |= MESSAGE_HEADER_PARSER_FLAG_CLEAN_ONELINE;
 	} else {
-		memset(&headers, 0, sizeof(headers));
+		i_zero(&headers);
 	}
 
 	/* Initialize body decoder */
@@ -1653,7 +1653,7 @@ int sieve_message_part_iter_init
 	if ( status <= 0 )
 		return status;
 
-	memset(iter, 0, sizeof(*iter));
+	i_zero(iter);
 	iter->renv = renv;
 	iter->index = 0;
 	iter->offset = 0;
diff --git a/src/lib-sieve/sieve-plugins.c b/src/lib-sieve/sieve-plugins.c
index a820ef461..46b7d54fc 100644
--- a/src/lib-sieve/sieve-plugins.c
+++ b/src/lib-sieve/sieve-plugins.c
@@ -76,7 +76,7 @@ void sieve_plugins_load
 	if ( path == NULL || *path == '\0' )
 		path = MODULEDIR"/sieve";
 
-	memset(&mod_set, 0, sizeof(mod_set));
+	i_zero(&mod_set);
 	mod_set.abi_version = PIGEONHOLE_ABI_VERSION;
 	mod_set.require_init_funcs = TRUE;
 	mod_set.debug = FALSE;
diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index 78f2bfa28..88567b57a 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -335,7 +335,7 @@ static int sieve_run
 
 	/* Reset execution status */
 	if ( senv->exec_status != NULL )
-		memset(senv->exec_status, 0, sizeof(*senv->exec_status));
+		i_zero(senv->exec_status);
 
 	/* Create result object */
 	if ( *result == NULL ) {
@@ -1012,7 +1012,7 @@ int sieve_trace_config_get(struct sieve_instance *svinst,
 		sieve_setting_get(svinst, "sieve_trace_level");
 	bool tr_debug, tr_addresses;
 
-	memset(tr_config, 0, sizeof(*tr_config));
+	i_zero(tr_config);
 
 	if ( tr_level == NULL || *tr_level == '\0' ||
 		strcasecmp(tr_level, "none") == 0 )
@@ -1063,7 +1063,7 @@ const char *sieve_get_user_email
 	if ( svinst->domainname != NULL ) {
 		struct sieve_address svaddr;
 
-		memset(&svaddr, 0, sizeof(svaddr));
+		i_zero(&svaddr);
 		svaddr.local_part = username;
 		svaddr.domain = svinst->domainname;
 		return sieve_address_to_string(&svaddr);
diff --git a/src/lib-sieve/storage/dict/sieve-dict-storage.c b/src/lib-sieve/storage/dict/sieve-dict-storage.c
index 2a82a6437..fc9521515 100644
--- a/src/lib-sieve/storage/dict/sieve-dict-storage.c
+++ b/src/lib-sieve/storage/dict/sieve-dict-storage.c
@@ -93,7 +93,7 @@ int sieve_dict_storage_get_dict
 	int ret;
 
 	if ( dstorage->dict == NULL ) {
-		memset(&dict_set, 0, sizeof(dict_set));
+		i_zero(&dict_set);
 		dict_set.username = dstorage->username;
 		dict_set.base_dir = svinst->base_dir;
 		ret = dict_init(dstorage->uri, &dict_set, &dstorage->dict, &error);
diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-db.c b/src/lib-sieve/storage/ldap/sieve-ldap-db.c
index 562e7f7d7..8496fa7c3 100644
--- a/src/lib-sieve/storage/ldap/sieve-ldap-db.c
+++ b/src/lib-sieve/storage/ldap/sieve-ldap-db.c
@@ -538,7 +538,7 @@ static void ldap_input(struct ldap_connection *conn)
 		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) {
@@ -812,7 +812,7 @@ int sieve_ldap_db_connect(struct ldap_connection *conn)
 
 	if (debug) {
 		if (gettimeofday(&start, NULL) < 0)
-			memset(&start, 0, sizeof(start));
+			i_zero(&start);
 	}
 	i_assert(conn->pending_count == 0);
 	if (conn->ld == NULL) {
@@ -864,7 +864,7 @@ int sieve_ldap_db_connect(struct ldap_connection *conn)
 #ifdef HAVE_LDAP_SASL
 		struct db_ldap_sasl_bind_context context;
 
-		memset(&context, 0, sizeof(context));
+		i_zero(&context);
 		context.authcid = set->dn;
 		context.passwd = set->dnpass;
 		context.realm = set->sasl_realm;
diff --git a/src/lib-sieve/tst-address.c b/src/lib-sieve/tst-address.c
index 0852a9e7f..3695c0c88 100644
--- a/src/lib-sieve/tst-address.c
+++ b/src/lib-sieve/tst-address.c
@@ -242,7 +242,7 @@ static int tst_address_operation_execute
 	int match, ret;
 
 	/* Read optional operands */
-	memset(&svmos, 0, sizeof(svmos));
+	i_zero(&svmos);
 	if ( sieve_message_opr_optional_read
 		(renv, address, NULL, &ret, &addrp, &mcht, &cmp, &svmos) < 0 )
 		return ret;
diff --git a/src/lib-sieve/tst-exists.c b/src/lib-sieve/tst-exists.c
index 51edcfe2f..9ca740c14 100644
--- a/src/lib-sieve/tst-exists.c
+++ b/src/lib-sieve/tst-exists.c
@@ -121,7 +121,7 @@ static int tst_exists_operation_execute
 	 */
 
 	/* Optional operands */
-	memset(&svmos, 0, sizeof(svmos));
+	i_zero(&svmos);
 	if ( sieve_message_opr_optional_read
 		(renv, address, NULL, &ret, NULL, NULL, NULL, &svmos) < 0 )
 		return ret;
diff --git a/src/lib-sieve/tst-header.c b/src/lib-sieve/tst-header.c
index 64b991c43..2eeced5b1 100644
--- a/src/lib-sieve/tst-header.c
+++ b/src/lib-sieve/tst-header.c
@@ -166,7 +166,7 @@ static int tst_header_operation_execute
 	 */
 
 	/* Optional operands */
-	memset(&svmos, 0, sizeof(svmos));
+	i_zero(&svmos);
 	if ( sieve_message_opr_optional_read
 		(renv, address, NULL, &ret, NULL, &mcht, &cmp, &svmos) < 0 )
 		return ret;
diff --git a/src/managesieve-login/managesieve-proxy.c b/src/managesieve-login/managesieve-proxy.c
index 2fadd9c2c..054a29c9c 100644
--- a/src/managesieve-login/managesieve-proxy.c
+++ b/src/managesieve-login/managesieve-proxy.c
@@ -90,7 +90,7 @@ static int proxy_write_auth
 		client->common.proxy_mech = &dsasl_client_mech_plain;
 
 	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;
diff --git a/src/managesieve/main.c b/src/managesieve/main.c
index 6bf5e3006..ee9e4bd2b 100644
--- a/src/managesieve/main.c
+++ b/src/managesieve/main.c
@@ -162,7 +162,7 @@ static void main_stdio_run(const char *username)
 	const char *value, *error, *input_base64;
 	buffer_t *input_buf;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "managesieve";
 	input.service = "sieve";
 	input.username =  username != NULL ? username : getenv("USER");
@@ -193,7 +193,7 @@ login_client_connected(const struct master_login_client *client,
 	const char *error;
 	buffer_t input_buf;
 
-	memset(&input, 0, sizeof(input));
+	i_zero(&input);
 	input.module = "managesieve";
 	input.service = "sieve";
 	input.local_ip = client->auth_req.local_ip;
@@ -251,7 +251,7 @@ int main(int argc, char *argv[])
 	const char *username = NULL;
 	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 &&
diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c
index e993b913f..beeb65824 100644
--- a/src/managesieve/managesieve-client.c
+++ b/src/managesieve/managesieve-client.c
@@ -532,7 +532,7 @@ void _client_reset_command(struct client *client)
     o_stream_set_flush_callback(client->output, client_output, client);
 
 	pool = client->cmd.pool;
-	memset(&client->cmd, 0, sizeof(client->cmd));
+	i_zero(&client->cmd);
 
 	p_clear(pool);
 	client->cmd.pool = pool;
diff --git a/src/managesieve/managesieve-commands.c b/src/managesieve/managesieve-commands.c
index 47051e968..7ba33329f 100644
--- a/src/managesieve/managesieve-commands.c
+++ b/src/managesieve/managesieve-commands.c
@@ -35,7 +35,7 @@ void command_register(const char *name, command_func_t *func)
 {
 	struct command cmd;
 
-	memset(&cmd, 0, sizeof(cmd));
+	i_zero(&cmd);
 	cmd.name = name;
 	cmd.func = func;
 	array_append(&managesieve_commands, &cmd, 1);
diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
index 568a2eca8..04ebcb088 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
@@ -87,7 +87,7 @@ mail_sieve_user_init
 	}
 
 	/* Delayed initialization of sieve storage until it's actually needed */
-	memset(&svenv, 0, sizeof(svenv));
+	i_zero(&svenv);
 	svenv.username = user->username;
 	(void)mail_user_get_home(user, &svenv.home_dir);
 	svenv.base_dir = user->set->base_dir;
diff --git a/src/plugins/imapsieve/imap-sieve-storage.c b/src/plugins/imapsieve/imap-sieve-storage.c
index a61cbdd80..19d117ab8 100644
--- a/src/plugins/imapsieve/imap-sieve-storage.c
+++ b/src/plugins/imapsieve/imap-sieve-storage.c
@@ -989,7 +989,7 @@ imap_sieve_mailbox_rules_match(struct mail_user *user,
 	struct imap_sieve_mailbox_rule lookup_rule;
 	struct imap_sieve_mailbox_rule *rule;
 
-	memset(&lookup_rule, 0, sizeof(lookup_rule));
+	i_zero(&lookup_rule);
 	lookup_rule.mailbox = dst_box;
 	lookup_rule.from = src_box;
 	rule = hash_table_lookup(isuser->mbox_rules, &lookup_rule);
diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c
index b5572908b..4abc7e3db 100644
--- a/src/plugins/imapsieve/imap-sieve.c
+++ b/src/plugins/imapsieve/imap-sieve.c
@@ -73,7 +73,7 @@ struct imap_sieve *imap_sieve_init(struct mail_user *user,
 
 	isieve->dup_ctx = duplicate_init(user);
 
-	memset(&svenv, 0, sizeof(svenv));
+	i_zero(&svenv);
 	svenv.username = user->username;
 	(void)mail_user_get_home(user, &svenv.home_dir);
 	svenv.hostname = lda_set->hostname;
@@ -687,7 +687,7 @@ int imap_sieve_run_mail
 	struct sieve_trace_log *trace_log;
 	int ret;
 
-	memset(&context, 0, sizeof(context));
+	i_zero(&context);
 	context.event.mailbox = isrun->mailbox;
 	context.event.cause = isrun->cause;
 	context.event.changed_flags = changed_flags;
@@ -701,13 +701,13 @@ int imap_sieve_run_mail
 			("%s.%s.%u", isieve->user->username,
 				mailbox_get_vname(isrun->mailbox), mail->uid);
 		if ( sieve_trace_log_open(svinst, tr_label, &trace_log) < 0 )
-			memset(&trace_config, 0, sizeof(trace_config));
+			i_zero(&trace_config);
 	}
 
 	T_BEGIN {
 		/* Collect necessary message data */
 
-		memset(&msgdata, 0, sizeof(msgdata));
+		i_zero(&msgdata);
 		msgdata.mail = mail;
 		msgdata.auth_user = isieve->user->username;
 		(void)mail_get_first_header
@@ -715,8 +715,8 @@ int imap_sieve_run_mail
 
 		/* Compose script execution environment */
 
-		memset(&scriptenv, 0, sizeof(scriptenv));
-		memset(&estatus, 0, sizeof(estatus));
+		i_zero(&scriptenv);
+		i_zero(&estatus);
 		scriptenv.default_mailbox = mailbox_get_vname(isrun->mailbox);
 		scriptenv.user = isieve->user;
 		scriptenv.postmaster_address = lda_set->postmaster_address;
diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index 9a7a5c4b4..de9fe7f1e 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -787,11 +787,11 @@ static int lda_sieve_execute
 		trace_log = NULL;
 		if ( sieve_trace_config_get(svinst, &trace_config) >= 0 &&
 			sieve_trace_log_open(svinst, NULL, &trace_log) < 0 )
-			memset(&trace_config, 0, sizeof(trace_config));
+			i_zero(&trace_config);
 
 		/* Collect necessary message data */
 
-		memset(&msgdata, 0, sizeof(msgdata));
+		i_zero(&msgdata);
 
 		msgdata.mail = mdctx->src_mail;
 		msgdata.return_path = mail_deliver_get_return_address(mdctx);
@@ -804,8 +804,8 @@ static int lda_sieve_execute
 
 		/* Compose script execution environment */
 
-		memset(&scriptenv, 0, sizeof(scriptenv));
-		memset(&estatus, 0, sizeof(estatus));
+		i_zero(&scriptenv);
+		i_zero(&estatus);
 
 		scriptenv.default_mailbox = mdctx->dest_mailbox_name;
 		scriptenv.mailbox_autocreate = mdctx->set->lda_mailbox_autocreate;
@@ -854,7 +854,7 @@ static int lda_sieve_deliver_mail
 
 	/* Initialize run context */
 
-	memset(&srctx, 0, sizeof(srctx));
+	i_zero(&srctx);
 	srctx.mdctx = mdctx;
 	(void)mail_user_get_home(mdctx->dest_user, &srctx.home_dir);
 
diff --git a/src/sieve-tools/sieve-filter.c b/src/sieve-tools/sieve-filter.c
index 9c5c9b7c2..79bbdc9ac 100644
--- a/src/sieve-tools/sieve-filter.c
+++ b/src/sieve-tools/sieve-filter.c
@@ -86,11 +86,11 @@ static int filter_message
 	sieve_tool_get_envelope_data(mail, &recipient, &sender);
 
 	/* Initialize execution status */
-	memset(&estatus, 0, sizeof(estatus));
+	i_zero(&estatus);
 	senv->exec_status = &estatus;
 
 	/* Collect necessary message data */
-	memset(&msgdata, 0, sizeof(msgdata));
+	i_zero(&msgdata);
 	msgdata.mail = mail;
 	msgdata.return_path = sender;
 	msgdata.orig_envelope_to = recipient;
@@ -284,7 +284,7 @@ static int filter_mailbox
 
 	/* Initialize */
 
-	memset(&sfctx, 0, sizeof(sfctx));
+	i_zero(&sfctx);
 	sfctx.data = sfdata;
 
 	/* Create test stream */
@@ -554,14 +554,14 @@ int main(int argc, char **argv)
 	}
 
 	/* Compose script environment */
-	memset(&scriptenv, 0, sizeof(scriptenv));
+	i_zero(&scriptenv);
 	scriptenv.mailbox_autocreate = FALSE;
 	scriptenv.default_mailbox = dst_mailbox;
 	scriptenv.user = mail_user;
 	scriptenv.postmaster_address = "postmaster@example.com";
 
 	/* Compose filter context */
-	memset(&sfdata, 0, sizeof(sfdata));
+	i_zero(&sfdata);
 	sfdata.senv = &scriptenv;
 	sfdata.discard_action = discard_action;
 	sfdata.move_mailbox = move_box;
diff --git a/src/sieve-tools/sieve-test.c b/src/sieve-tools/sieve-test.c
index ed77e4ad7..4ddc4c405 100644
--- a/src/sieve-tools/sieve-test.c
+++ b/src/sieve-tools/sieve-test.c
@@ -147,7 +147,7 @@ int main(int argc, char **argv)
 	/* Parse arguments */
 	recipient = final_recipient = sender = mailbox = dumpfile =
 		tracefile = mailloc = NULL;
-	memset(&trace_config, 0, sizeof(trace_config));
+	i_zero(&trace_config);
 	trace_config.level = SIEVE_TRLVL_ACTIONS;
 	while ((c = sieve_tool_getopt(sieve_tool)) > 0) {
 		switch (c) {
@@ -268,7 +268,7 @@ int main(int argc, char **argv)
 			mailbox = "INBOX";
 
 		/* Collect necessary message data */
-		memset(&msgdata, 0, sizeof(msgdata));
+		i_zero(&msgdata);
 		msgdata.mail = mail;
 		msgdata.return_path = sender;
 		msgdata.orig_envelope_to = recipient;
@@ -296,7 +296,7 @@ int main(int argc, char **argv)
 		}
 
 		/* Compose script environment */
-		memset(&scriptenv, 0, sizeof(scriptenv));
+		i_zero(&scriptenv);
 		scriptenv.default_mailbox = mailbox;
 		scriptenv.user = sieve_tool_get_mail_user(sieve_tool);
 		scriptenv.postmaster_address = "postmaster@example.com";
diff --git a/src/testsuite/testsuite-mailstore.c b/src/testsuite/testsuite-mailstore.c
index 11e56102b..d04f85729 100644
--- a/src/testsuite/testsuite-mailstore.c
+++ b/src/testsuite/testsuite-mailstore.c
@@ -267,7 +267,7 @@ int testsuite_mailstore_set_imap_metadata
 			(testsuite_mailstore_user);
 	}
 
-	memset(&avalue, 0, sizeof(avalue));
+	i_zero(&avalue);
 	avalue.value = value;
 	if ((ret=imap_metadata_set(imtrans, annotation, &avalue)) < 0) {
 		error = imap_metadata_transaction_get_last_error
diff --git a/src/testsuite/testsuite-message.c b/src/testsuite/testsuite-message.c
index f83cc441e..aaaa90a14 100644
--- a/src/testsuite/testsuite-message.c
+++ b/src/testsuite/testsuite-message.c
@@ -58,7 +58,7 @@ testsuite_message_get_address(struct mail *mail, const char *header)
 	if ( addr->domain == NULL || *addr->domain == '\0' )
 		return addr->mailbox;
 
-	memset(&svaddr, 0, sizeof(svaddr));
+	i_zero(&svaddr);
 	svaddr.local_part = addr->mailbox;
 	svaddr.domain = addr->domain;
 	return sieve_address_to_string(&svaddr);
@@ -88,7 +88,7 @@ static void testsuite_message_set_data(struct mail *mail)
 	if ( sender == NULL )
 		sender = "sender@example.com";
 
-	memset(&testsuite_msgdata, 0, sizeof(testsuite_msgdata));
+	i_zero(&testsuite_msgdata);
 	testsuite_msgdata.mail = mail;
 	testsuite_msgdata.auth_user = sieve_tool_get_username(sieve_tool);
 
diff --git a/src/testsuite/testsuite-script.c b/src/testsuite/testsuite-script.c
index 9bfb1115e..94ff84a24 100644
--- a/src/testsuite/testsuite-script.c
+++ b/src/testsuite/testsuite-script.c
@@ -106,7 +106,7 @@ bool testsuite_script_run(const struct sieve_runtime_env *renv)
 	testsuite_log_clear_messages();
 
 	/* Compose script execution environment */
-	memset(&scriptenv, 0, sizeof(scriptenv));
+	i_zero(&scriptenv);
 	scriptenv.default_mailbox = "INBOX";
 	scriptenv.postmaster_address = "postmaster@example.com";
 	scriptenv.smtp_start = NULL;
@@ -179,7 +179,7 @@ bool testsuite_script_multiscript
 	testsuite_log_clear_messages();
 
 	/* Compose script execution environment */
-	memset(&scriptenv, 0, sizeof(scriptenv));
+	i_zero(&scriptenv);
 	scriptenv.default_mailbox = "INBOX";
 	scriptenv.postmaster_address = "postmaster@example.com";
 	scriptenv.smtp_start = NULL;
diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c
index 38bcf84e8..66952e12a 100644
--- a/src/testsuite/testsuite.c
+++ b/src/testsuite/testsuite.c
@@ -95,7 +95,7 @@ int main(int argc, char **argv)
 
 	/* Parse arguments */
 	dumpfile = tracefile = NULL;
-	memset(&trace_config, 0, sizeof(trace_config));
+	i_zero(&trace_config);
 	trace_config.level = SIEVE_TRLVL_ACTIONS;
 	while ((c = sieve_tool_getopt(sieve_tool)) > 0) {
 		switch (c) {
@@ -177,7 +177,7 @@ int main(int argc, char **argv)
 		testsuite_mailstore_init();
 		testsuite_message_init();
 
-		memset(&scriptenv, 0, sizeof(scriptenv));
+		i_zero(&scriptenv);
 		scriptenv.user = testsuite_mailstore_get_user();
 		scriptenv.default_mailbox = "INBOX";
 		scriptenv.postmaster_address = "postmaster@example.com";
-- 
GitLab