From dba245c0df3f13758b1e9a8d4bd9a8298bf0f688 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@dovecot.fi> Date: Sat, 9 Apr 2016 13:53:10 +0200 Subject: [PATCH] lib-sieve: Made parsing of explicit address for mail sender setting check the address syntax. --- src/lib-sieve/cmd-redirect.c | 2 +- src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c | 2 +- src/lib-sieve/sieve-common.h | 2 +- src/lib-sieve/sieve-settings.c | 12 ++++++++---- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lib-sieve/cmd-redirect.c b/src/lib-sieve/cmd-redirect.c index 22bd6db7a..74974688d 100644 --- a/src/lib-sieve/cmd-redirect.c +++ b/src/lib-sieve/cmd-redirect.c @@ -362,7 +362,7 @@ static int act_redirect_send sender = senv->postmaster_address; break; case SIEVE_MAIL_SENDER_SOURCE_EXPLICIT: - sender = env_from->address; + sender = sieve_address_to_string(env_from->address); break; default: break; diff --git a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c index 737430b34..2f466836f 100644 --- a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c +++ b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c @@ -499,7 +499,7 @@ static int ntfy_mailto_send from_smtp = sieve_message_get_orig_recipient(nenv->msgctx); break; case SIEVE_MAIL_SENDER_SOURCE_EXPLICIT: - from_smtp = env_from->address; + from_smtp = sieve_address_to_string(env_from->address); break; case SIEVE_MAIL_SENDER_SOURCE_DEFAULT: if ( mtctx->from_normalized != NULL ) { diff --git a/src/lib-sieve/sieve-common.h b/src/lib-sieve/sieve-common.h index 508958c23..4191730f4 100644 --- a/src/lib-sieve/sieve-common.h +++ b/src/lib-sieve/sieve-common.h @@ -32,7 +32,7 @@ enum sieve_mail_sender_source { struct sieve_mail_sender { enum sieve_mail_sender_source source; - const char *address; + const struct sieve_address *address; }; /* diff --git a/src/lib-sieve/sieve-settings.c b/src/lib-sieve/sieve-settings.c index ae651a1c9..f573db7c5 100644 --- a/src/lib-sieve/sieve-settings.c +++ b/src/lib-sieve/sieve-settings.c @@ -8,6 +8,7 @@ #include "sieve-common.h" #include "sieve-limits.h" #include "sieve-error.h" +#include "sieve-address.h" #include "sieve-settings.h" #include <ctype.h> @@ -224,10 +225,13 @@ bool sieve_setting_get_mail_sender_value } else if ( str_value[0] == '<' && str_value[set_len-1] == '>') { sender->source = SIEVE_MAIL_SENDER_SOURCE_EXPLICIT; - str_value = ph_t_str_trim(t_strndup(str_value+1, set_len-2), "\t "); - sender->address = NULL; - if ( *str_value != '\0' ) - sender->address = p_strdup(pool, str_value); + sender->address = sieve_address_parse_envelope_path + (pool, t_strndup(str_value+1, set_len-2)); + if (sender->address == NULL) { + sieve_sys_warning(svinst, + "Invalid explicit address value for setting '%s': " + "'%s'", setting, str_value); + } } else { sieve_sys_warning(svinst, "Invalid value for setting '%s': '%s'", setting, -- GitLab