diff options
| author | Maxim Dounin <mdounin@mdounin.ru> | 2014-05-21 21:56:20 +0400 |
|---|---|---|
| committer | Maxim Dounin <mdounin@mdounin.ru> | 2014-05-21 21:56:20 +0400 |
| commit | f96771ab0519eaec5808d8816db5ba262c6c1b70 (patch) | |
| tree | 6e187bd72e6629646efb23d67bcbd12ffd8ad12f | |
| parent | 262e4953161898b85fb017b46d1c6aca177c0c11 (diff) | |
| download | nginx-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.c | 10 |
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; |
