Mercurial > hg > nginx
comparison src/mail/ngx_mail_smtp_handler.c @ 5791:d68cd5070f3d stable-1.6
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.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 21 May 2014 21:56:20 +0400 |
parents | 98876ce2a7fd |
children | 3f5d0af4e40a |
comparison
equal
deleted
inserted
replaced
5790:af00bfa9b701 | 5791:d68cd5070f3d |
---|---|
677 if (s->smtp_from.len) { | 677 if (s->smtp_from.len) { |
678 ngx_str_set(&s->out, smtp_bad_sequence); | 678 ngx_str_set(&s->out, smtp_bad_sequence); |
679 return NGX_OK; | 679 return NGX_OK; |
680 } | 680 } |
681 | 681 |
682 if (s->args.nelts == 0) { | |
683 ngx_str_set(&s->out, smtp_invalid_argument); | |
684 return NGX_OK; | |
685 } | |
686 | |
682 arg = s->args.elts; | 687 arg = s->args.elts; |
683 arg += s->args.nelts - 1; | 688 arg += s->args.nelts - 1; |
684 | 689 |
685 cmd.len = arg->data + arg->len - s->cmd.data; | 690 cmd.len = arg->data + arg->len - s->cmd.data; |
686 cmd.data = s->cmd.data; | 691 cmd.data = s->cmd.data; |
708 { | 713 { |
709 ngx_str_t *arg, cmd; | 714 ngx_str_t *arg, cmd; |
710 | 715 |
711 if (s->smtp_from.len == 0) { | 716 if (s->smtp_from.len == 0) { |
712 ngx_str_set(&s->out, smtp_bad_sequence); | 717 ngx_str_set(&s->out, smtp_bad_sequence); |
718 return NGX_OK; | |
719 } | |
720 | |
721 if (s->args.nelts == 0) { | |
722 ngx_str_set(&s->out, smtp_invalid_argument); | |
713 return NGX_OK; | 723 return NGX_OK; |
714 } | 724 } |
715 | 725 |
716 arg = s->args.elts; | 726 arg = s->args.elts; |
717 arg += s->args.nelts - 1; | 727 arg += s->args.nelts - 1; |