From: Stephan Bosch Date: Wed, 31 Jan 2018 23:14:55 +0000 (+0100) Subject: lib-lda: Parse Return-Path header using RFC5322 (IMF) "path" syntax, rather than... X-Git-Tag: 2.3.9~2375 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d606eb5019bc237cf4add562d54e2345b756f50;p=thirdparty%2Fdovecot%2Fcore.git lib-lda: Parse Return-Path header using RFC5322 (IMF) "path" syntax, rather than RFC5321 (SMTP) "Path" syntax. SMTP does not allow white space, which causes all kinds of trouble when the address is parsed from a header field. --- diff --git a/src/lib-lda/mail-deliver.c b/src/lib-lda/mail-deliver.c index 9c82563d92..558face961 100644 --- a/src/lib-lda/mail-deliver.c +++ b/src/lib-lda/mail-deliver.c @@ -405,8 +405,8 @@ int mail_deliver_save(struct mail_deliver_context *ctx, const char *mailbox, const struct smtp_address * mail_deliver_get_return_address(struct mail_deliver_context *ctx) { - struct smtp_address *address; - const char *path, *error; + struct message_address *addr; + const char *path; int ret; if (!smtp_address_isnull(ctx->mail_from)) @@ -421,13 +421,14 @@ mail_deliver_get_return_address(struct mail_deliver_context *ctx) } return NULL; } - if (smtp_address_parse_path(ctx->pool, path, - SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL, - &address, &error) < 0) { - i_warning("Failed to parse return-path header: %s", error); + if (message_address_parse_path(pool_datastack_create(), + (const unsigned char *)path, + strlen(path), &addr) < 0) { + i_warning("Failed to parse return-path header"); return NULL; } - return address; + + return smtp_address_create_from_msg(ctx->pool, addr); } const char *mail_deliver_get_new_message_id(struct mail_deliver_context *ctx)