dovecot-2.0: lmtp: Crashfix for handling invalid MAIL/RCPT comma...

dovecot at dovecot.org dovecot at dovecot.org
Mon Apr 5 08:18:27 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/c435103ee0ff
changeset: 11067:c435103ee0ff
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Apr 05 08:18:25 2010 +0300
description:
lmtp: Crashfix for handling invalid MAIL/RCPT commands.

diffstat:

 src/lmtp/commands.c |  17 ++++-------------
 1 files changed, 4 insertions(+), 13 deletions(-)

diffs (45 lines):

diff -r 767eb5691fe2 -r c435103ee0ff src/lmtp/commands.c
--- a/src/lmtp/commands.c	Mon Apr 05 08:13:36 2010 +0300
+++ b/src/lmtp/commands.c	Mon Apr 05 08:18:25 2010 +0300
@@ -85,19 +85,14 @@
 	}
 
 	argv = t_strsplit(args, " ");
-	if (argv == NULL)
-		addr = "";
-	else {
-		addr = argv[0];
-		argv++;
-	}
+	addr = argv[0] == NULL ? "" : argv[0];
 	len = strlen(addr);
 	if (strncasecmp(addr, "FROM:<", 6) != 0 || addr[len-1] != '>') {
 		client_send_line(client, "501 5.5.4 Invalid parameters");
 		return 0;
 	}
 
-	for (; *argv != NULL; argv++) {
+	for (argv++; *argv != NULL; argv++) {
 		if (strcasecmp(*argv, "BODY=7BIT") == 0)
 			client->mail_body_7bit = TRUE;
 		else if (strcasecmp(*argv, "BODY=8BITMIME") == 0)
@@ -346,17 +341,13 @@
 	}
 
 	argv = t_strsplit(args, " ");
-	if (argv == NULL)
-		arg = "";
-	else {
-		arg = argv[0];
-		argv++;
-	}
+	arg = argv[0] == NULL ? "" : argv[0];
 	len = strlen(arg);
 	if (strncasecmp(arg, "TO:<", 4) != 0 || arg[len-1] != '>') {
 		client_send_line(client, "501 5.5.4 Invalid parameters");
 		return 0;
 	}
+	argv++;
 
 	memset(&rcpt, 0, sizeof(rcpt));
 	address = lmtp_unescape_address(t_strndup(arg + 4, len - 5));


More information about the dovecot-cvs mailing list