changeset 22155:fe6b566d6f1c

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.
author Pali Rohár <pali.rohar@gmail.com>
date Sun, 05 Jun 2016 15:48:16 +0200
parents 91278ef69de7
children b37395fd83cd
files src/lib-mail/message-address.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/message-address.c	Sun Jun 05 15:48:15 2016 +0200
+++ b/src/lib-mail/message-address.c	Sun Jun 05 15:48:16 2016 +0200
@@ -158,7 +158,8 @@
 	/* 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 @@
 			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;
 }