summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2014-05-21 21:56:20 +0400
committerMaxim Dounin <mdounin@mdounin.ru>2014-05-21 21:56:20 +0400
commitf96771ab0519eaec5808d8816db5ba262c6c1b70 (patch)
tree6e187bd72e6629646efb23d67bcbd12ffd8ad12f
parent262e4953161898b85fb017b46d1c6aca177c0c11 (diff)
downloadnginx-f96771ab0519eaec5808d8816db5ba262c6c1b70.tar.gz
nginx-f96771ab0519eaec5808d8816db5ba262c6c1b70.tar.bz2
Mail: added a check for the number of arguments in MAIL/RCPT.
Missed during introduction of the SMTP pipelining support (04e43d03e153, 1.5.6). Previously, the check wasn't needed as s->buffer was used directly and the number of arguments didn't matter. Reported by Svyatoslav Nikolsky.
-rw-r--r--src/mail/ngx_mail_smtp_handler.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mail/ngx_mail_smtp_handler.c b/src/mail/ngx_mail_smtp_handler.c
index 52fe47523..665f5ef19 100644
--- a/src/mail/ngx_mail_smtp_handler.c
+++ b/src/mail/ngx_mail_smtp_handler.c
@@ -679,6 +679,11 @@ ngx_mail_smtp_mail(ngx_mail_session_t *s, ngx_connection_t *c)
return NGX_OK;
}
+ if (s->args.nelts == 0) {
+ ngx_str_set(&s->out, smtp_invalid_argument);
+ return NGX_OK;
+ }
+
arg = s->args.elts;
arg += s->args.nelts - 1;
@@ -713,6 +718,11 @@ ngx_mail_smtp_rcpt(ngx_mail_session_t *s, ngx_connection_t *c)
return NGX_OK;
}
+ if (s->args.nelts == 0) {
+ ngx_str_set(&s->out, smtp_invalid_argument);
+ return NGX_OK;
+ }
+
arg = s->args.elts;
arg += s->args.nelts - 1;