From: Philip Hazel Date: Thu, 19 Apr 2007 13:19:06 +0000 (+0000) Subject: Update version number; apply new patch from Sieve maintainer. X-Git-Tag: exim-4_68~52 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/eb4c0de6a9078df61b580ee20e575f1a40ddb242 Update version number; apply new patch from Sieve maintainer. --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index b54416c14..e6ecdce5b 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -1,8 +1,14 @@ -$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.504 2007/04/16 11:17:12 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.505 2007/04/19 13:19:06 ph10 Exp $ Change log file for Exim from version 4.21 ------------------------------------------- +Exim version 4.68 +----------------- + +PH/01 Another patch from the Sieve maintainer. + + Exim version 4.67 ----------------- diff --git a/src/src/sieve.c b/src/src/sieve.c index 56b000272..e243f653c 100644 --- a/src/src/sieve.c +++ b/src/src/sieve.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/sieve.c,v 1.27 2007/04/12 09:00:52 ph10 Exp $ */ +/* $Cambridge: exim/src/src/sieve.c,v 1.28 2007/04/19 13:19:06 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -1197,12 +1197,13 @@ return 1; #ifdef ENCODED_CHARACTER /************************************************* -* Decode encoded-character string * +* Decode hex-encoded-character string * *************************************************/ /* Encoding definition: - hex-pair-seq = hex-pair *(WSP hex-pair) + blank = SP / TAB / CRLF + hex-pair-seq = *blank hex-pair *(1*blank hex-pair) *blank hex-pair = 1*2HEXDIG Arguments: @@ -1219,37 +1220,42 @@ static int hex_decode(uschar *src, uschar *end, uschar *dst) { int decoded=0; -while (src='0' && h<='9') ? h-'0' : 10+(h-'a'); - l=(l>='0' && l<='9') ? l-'0' : 10+(l-'a'); - if (dst) *dst++=(h<<4)|l; - ++decoded; - src+=2; - } - else return -1; + for (x=0,d=0; d<2 && src='0' && n<='9' ? n-'0' : 10+(n-'a')),++d,++src); + if (d==0) return -1; + if (dst) *dst++=x; + ++decoded; + if (src==end) return decoded; + if (*src==' ' || *src=='\t' || *src=='\n') + while (*src==' ' || *src=='\t' || *src=='\n') ++src; + else + return -1; } - return decoded; +while (src='0' && n<='9' ? n-'0' : 10+(n-'a')),++d,++src); + if (src==hex_seq) return -1; + if (d==7 || (!((c>=0 && c<=0xd7ff) || (c>=0xe000 && c<=0x10ffff)))) return -2; + if (c<128) { - n5=(n5>='0' && n5<='9') ? n5-'0' : 10+(n5-'a'); - n4=(n4>='0' && n4<='9') ? n4-'0' : 10+(n4-'a'); - n3=(n3>='0' && n3<='9') ? n3-'0' : 10+(n3-'a'); - n2=(n2>='0' && n2<='9') ? n2-'0' : 10+(n2-'a'); - n1=(n1>='0' && n1<='9') ? n1-'0' : 10+(n1-'a'); - n0=(n0>='0' && n0<='9') ? n0-'0' : 10+(n0-'a'); - c=(n5<<24)|(n4<<16)|(n3<<12)|(n2<<8)|(n1<<4)|n0; - if (!((c>=0 && c<=0xd7ff) || (c>=0xe000 && c<=0x10ffff))) return -2; - if (c<128) - { - if (dst) *dst++=c; - ++decoded; - } - else if (c>=0x80 && c<=0x7ff) - { - if (dst) - { - *dst++=192+(c>>6); - *dst++=128+(c&0x3f); - } - decoded+=2; - } - else if (c>=0x800 && c<=0xffff) - { - if (dst) - { - *dst++=224+(c>>12); - *dst++=128+((c>>6)&0x3f); - *dst++=128+(c&0x3f); - } - decoded+=3; - } - else if (c>=0x10000 && c<=0x1fffff) - { - if (dst) - { - *dst++=240+(c>>18); - *dst++=128+((c>>10)&0x3f); - *dst++=128+((c>>6)&0x3f); - *dst++=128+(c&0x3f); - } - decoded+=4; - } - src+=6; + if (dst) *dst++=c; + ++decoded; + } + else if (c>=0x80 && c<=0x7ff) + { + if (dst) + { + *dst++=192+(c>>6); + *dst++=128+(c&0x3f); + } + decoded+=2; + } + else if (c>=0x800 && c<=0xffff) + { + if (dst) + { + *dst++=224+(c>>12); + *dst++=128+((c>>6)&0x3f); + *dst++=128+(c&0x3f); + } + decoded+=3; + } + else if (c>=0x10000 && c<=0x1fffff) + { + if (dst) + { + *dst++=240+(c>>18); + *dst++=128+((c>>10)&0x3f); + *dst++=128+((c>>6)&0x3f); + *dst++=128+(c&0x3f); + } + decoded+=4; + } + if (*src==' ' || *src=='\t' || *src=='\n') + { + while (*src==' ' || *src=='\t' || *src=='\n') ++src; + if (src==end) return decoded; + goto unicode_hex; } - else return -1; } - return decoded; +while (src=0 ) @@ -1369,7 +1367,7 @@ while (srcpc,id,idlen)==0) + if (strncmpic(US filter->pc,US id,idlen)==0) { uschar next=filter->pc[idlen]; diff --git a/src/src/version.c b/src/src/version.c index 70cf65a7b..969132e98 100644 --- a/src/src/version.c +++ b/src/src/version.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/version.c,v 1.21 2007/01/15 15:59:22 ph10 Exp $ */ +/* $Cambridge: exim/src/src/version.c,v 1.22 2007/04/19 13:19:06 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -12,7 +12,7 @@ #include "exim.h" -#define THIS_VERSION "4.67" +#define THIS_VERSION "4.68" /* The header file cnumber.h contains a single line containing the