From: Pali Rohár Date: Sun, 5 Jun 2016 13:48:16 +0000 (+0200) Subject: lib-mail: parse_addr_spec: Like in rfc822_skip_comment() check if last_comment is... X-Git-Tag: 2.3.0.rc1~3541 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f185d56a963048e25c76ec84e7b8e1ba69b022a6;p=thirdparty%2Fdovecot%2Fcore.git lib-mail: parse_addr_spec: Like in rfc822_skip_comment() check if last_comment is not NULL This will fix possible NULL pointer dereference when caller does not set last_comment. --- diff --git a/src/lib-mail/message-address.c b/src/lib-mail/message-address.c index 9ce4a55e48..4e861857e8 100644 --- a/src/lib-mail/message-address.c +++ b/src/lib-mail/message-address.c @@ -158,7 +158,8 @@ static int parse_addr_spec(struct message_address_parser_context *ctx) /* addr-spec = local-part "@" domain */ int ret, ret2; - str_truncate(ctx->parser.last_comment, 0); + if (ctx->parser.last_comment != NULL) + str_truncate(ctx->parser.last_comment, 0); ret = parse_local_part(ctx); if (ret != 0 && *ctx->parser.data == '@') { @@ -167,9 +168,11 @@ static int parse_addr_spec(struct message_address_parser_context *ctx) ret = ret2; } - if (str_len(ctx->parser.last_comment) > 0) { - ctx->addr.name = - p_strdup(ctx->pool, str_c(ctx->parser.last_comment)); + if (ctx->parser.last_comment != NULL) { + if (str_len(ctx->parser.last_comment) > 0) { + ctx->addr.name = + p_strdup(ctx->pool, str_c(ctx->parser.last_comment)); + } } return ret; }