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.
diff --git a/src/mail/ngx_mail_parse.c b/src/mail/ngx_mail_parse.c
index cc52930..47c9e3a 100644
--- a/src/mail/ngx_mail_parse.c
+++ b/src/mail/ngx_mail_parse.c
@@ -265,6 +265,17 @@
case LF:
s->state = sw_start;
return NGX_MAIL_PARSE_INVALID_COMMAND;
+ default:
+ if ((ch < 'A' || ch > 'Z') && (ch < 'a' || ch > 'z')
+ && (ch < '0' || ch > '9') && ch != '-' && ch != '.'
+ && ch != '_')
+ {
+ goto invalid;
+ }
+ if (p - s->buffer->start > 31) {
+ goto invalid;
+ }
+ break;
}
break;