Mercurial > hg > nginx
comparison src/mail/ngx_mail_parse.c @ 7842:4b15f1b92100
Mail: stricter checking of IMAP tags.
Only "A-Za-z0-9-._" characters now allowed (which is stricter than what
RFC 3501 requires, but expected to be enough for all known clients),
and tags shouldn't be longer than 32 characters.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 19 May 2021 03:13:26 +0300 |
parents | ccdf83bee8c1 |
children | b38728495e1a |
comparison
equal
deleted
inserted
replaced
7841:ccdf83bee8c1 | 7842:4b15f1b92100 |
---|---|
263 s->state = sw_start; | 263 s->state = sw_start; |
264 return NGX_MAIL_PARSE_INVALID_COMMAND; | 264 return NGX_MAIL_PARSE_INVALID_COMMAND; |
265 case LF: | 265 case LF: |
266 s->state = sw_start; | 266 s->state = sw_start; |
267 return NGX_MAIL_PARSE_INVALID_COMMAND; | 267 return NGX_MAIL_PARSE_INVALID_COMMAND; |
268 default: | |
269 if ((ch < 'A' || ch > 'Z') && (ch < 'a' || ch > 'z') | |
270 && (ch < '0' || ch > '9') && ch != '-' && ch != '.' | |
271 && ch != '_') | |
272 { | |
273 goto invalid; | |
274 } | |
275 if (p - s->buffer->start > 31) { | |
276 goto invalid; | |
277 } | |
278 break; | |
268 } | 279 } |
269 break; | 280 break; |
270 | 281 |
271 case sw_spaces_before_command: | 282 case sw_spaces_before_command: |
272 switch (ch) { | 283 switch (ch) { |