From 82e4024e0f00e8e58c39deb57e67c826b094bc7e Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Tue, 25 Dec 2007 12:40:06 +0100 Subject: [PATCH] Fixed non-standard behavior for the encoded-character extension. --- sieve/tests/encoded-character.sieve | 2 +- src/lib-sieve/ext-encoded-character.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sieve/tests/encoded-character.sieve b/sieve/tests/encoded-character.sieve index f9972a505..1fb5b4692 100644 --- a/sieve/tests/encoded-character.sieve +++ b/sieve/tests/encoded-character.sieve @@ -7,5 +7,5 @@ if address :contains "from" "idiot.com" { } elsif header :contains "subject" "idiot" { fileinto "INBOX.${hex: 49 44 49 4F 54}"; } else { - fileinto "INBOX.${unicode: 0052 00e6}vh${unicode: 00f8 006c}"; + fileinto "INBOX.${unicode: 0052 00E6}vh${unicode: 00F8 006C}"; } diff --git a/src/lib-sieve/ext-encoded-character.c b/src/lib-sieve/ext-encoded-character.c index a213c086b..96f017897 100644 --- a/src/lib-sieve/ext-encoded-character.c +++ b/src/lib-sieve/ext-encoded-character.c @@ -59,7 +59,8 @@ static bool _skip_whitespace continue; } - if ( **in != ' ' && **in != '\n' ) /* Loose LF is non-standard */ + /* (Loose LF is non-standard) */ + if ( **in != ' ' && **in != '\n' && **in != '\t' ) break; (*in)++; @@ -78,8 +79,9 @@ static bool _parse_hexint if ( (**in) >= '0' && (**in) <= '9' ) *result = ((*result) << 4) + (**in) - ((unsigned int) '0'); + /* Lower-case version is not allowed by RFC else if ( (**in) >= 'a' && (**in) <= 'f' ) - *result = ((*result) << 4) + (**in) - ((unsigned int) 'a') + 0x0a; + *result = ((*result) << 4) + (**in) - ((unsigned int) 'a') + 0x0a;*/ else if ( (**in) >= 'A' && (**in) <= 'F' ) *result = ((*result) << 4) + (**in) - ((unsigned int) 'A') + 0x0a; else -- GitLab