Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6889:3ec5a07d00f2 HEAD
Added IMAP_PARSE_FLAG_ATOM_ALLCHARS.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 02 Dec 2007 12:50:50 +0200 |
parents | 51bf40995f0f |
children | 0ddc6511e9ff |
files | src/lib-imap/imap-parser.c src/lib-imap/imap-parser.h |
diffstat | 2 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-imap/imap-parser.c Sun Dec 02 11:33:36 2007 +0200 +++ b/src/lib-imap/imap-parser.c Sun Dec 02 12:50:50 2007 +0200 @@ -231,15 +231,22 @@ static int is_valid_atom_char(struct imap_parser *parser, char chr) { + const char *error; + if (IS_ATOM_SPECIAL_INPUT((unsigned char)chr)) { - parser->error = "Invalid characters in atom"; + error = "Invalid characters in atom"; return FALSE; } else if ((chr & 0x80) != 0) { - parser->error = "8bit data in atom"; + error = "8bit data in atom"; return FALSE; + } else { + return TRUE; } - return TRUE; + if ((parser->flags & IMAP_PARSE_FLAG_ATOM_ALLCHARS) != 0) + return TRUE; + parser->error = error; + return FALSE; } static int imap_parser_read_atom(struct imap_parser *parser,
--- a/src/lib-imap/imap-parser.h Sun Dec 02 11:33:36 2007 +0200 +++ b/src/lib-imap/imap-parser.h Sun Dec 02 12:50:50 2007 +0200 @@ -26,7 +26,9 @@ /* Don't remove '\' chars from string arguments */ IMAP_PARSE_FLAG_NO_UNESCAPE = 0x02, /* Return literals as IMAP_ARG_LITERAL instead of IMAP_ARG_STRING */ - IMAP_PARSE_FLAG_LITERAL_TYPE = 0x04 + IMAP_PARSE_FLAG_LITERAL_TYPE = 0x04, + /* Don't check if atom contains invalid characters */ + IMAP_PARSE_FLAG_ATOM_ALLCHARS = 0x08 }; enum imap_arg_type {