[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim…

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: exim-cvs
Subject: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim/exim-src/src sieve.c version.c
ph10 2007/04/19 14:19:07 BST

  Modified files:
    exim-doc/doc-txt     ChangeLog 
    exim-src/src         sieve.c version.c 
  Log:
  Update version number; apply new patch from Sieve maintainer.


  Revision  Changes    Path
  1.505     +6 -0      exim/exim-doc/doc-txt/ChangeLog
  1.28      +77 -79    exim/exim-src/src/sieve.c
  1.22      +1 -1      exim/exim-src/src/version.c


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.504
  retrieving revision 1.505
  diff -u -r1.504 -r1.505
  --- ChangeLog    16 Apr 2007 11:17:12 -0000    1.504
  +++ ChangeLog    19 Apr 2007 13:19:06 -0000    1.505
  @@ -1,7 +1,13 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.504 2007/04/16 11:17:12 ph10 Exp $
  +$Cambridge: exim/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
-----------------

  Index: sieve.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/sieve.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- sieve.c    12 Apr 2007 09:00:52 -0000    1.27
  +++ sieve.c    19 Apr 2007 13:19:06 -0000    1.28
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/sieve.c,v 1.27 2007/04/12 09:00:52 ph10 Exp $ */
  +/* $Cambridge: exim/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 @@


   #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 @@
{
int decoded=0;

  -while (src<end)
  +while (*src==' ' || *src=='\t' || *src=='\n') ++src;
  +do
     {
  -  int l,h;
  +  int x,d,n;


  -  if (*src==' ' || *src=='\t') ++src;
  -  else if ((src+1)<end && isxdigit(h=tolower(*src)) && isxdigit(l=tolower(*(src+1))))
  -    {
  -    h=(h>='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<end && isxdigit(n=tolower(*src)); x=(x<<4)|(n>='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<end);
  +return decoded;
   }



   /*************************************************
  -*       Decode encoded-character string          *
  +*    Decode unicode-encoded-character string     *
   *************************************************/


   /*
   Encoding definition:
  -   unicode-hex-seq      = unicode-hex *(WSP unicode-hex)
  -   unicode-hex          = 1*6HEXDIG
  +   blank                = SP / TAB / CRLF
  +   unicode-hex-seq      = *blank unicode-hex *(blank unicode-hex) *blank
  +   unicode-hex          = 1*HEXDIG


      It is an error for a script to use a hexadecimal value that isn't in
      either the range 0 to D7FF or the range E000 to 10FFFF.


  +   At this time, strings are already scanned, thus the CRLF is converted
  +   to the internally used \n (should RFC_EOL have been used).
  +
   Arguments:
     src         points to a unicode-hex-seq
     end         points to its end
  @@ -1265,69 +1271,61 @@
   {
   int decoded=0;


  -while (src<end)
  +while (*src==' ' || *src=='\t' || *src=='\n') ++src;
  +do
     {
  -  int c,n5,n4,n3,n2,n1,n0;
  +  uschar *hex_seq;
  +  int c,d,n;


  -  if (*src==' ' || *src=='\t') ++src;
  -  else if (
  -           (src+5)<end
  -           && isxdigit(n5=tolower(*src))
  -           && isxdigit(n4=tolower(*(src+1)))
  -           && isxdigit(n3=tolower(*(src+2)))
  -           && isxdigit(n2=tolower(*(src+3)))
  -           && isxdigit(n1=tolower(*(src+4)))
  -           && isxdigit(n0=tolower(*(src+5)))
  -          )
  +  unicode_hex:
  +  for (hex_seq=src; src<end && *src=='0'; ++src);
  +  for (c=0,d=0; d<7 && src<end && isxdigit(n=tolower(*src)); c=(c<<4)|(n>='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<end);
  +return decoded;
   }



  @@ -1360,7 +1358,7 @@
     uschar *brace;


     if (
  -      Ustrncmp(src,CUS "${hex:",6)==0
  +      strncmpic(src,US "${hex:",6)==0
         && (brace=Ustrchr(src+6,'}'))!=(uschar*)0
         && (hex_decode(src+6,brace,(uschar*)0))>=0
        )
  @@ -1369,7 +1367,7 @@
       src=brace+1;
       }
     else if (
  -           Ustrncmp(src,CUS "${unicode:",10)==0
  +           strncmpic(src,US "${unicode:",10)==0
              && (brace=Ustrchr(src+10,'}'))!=(uschar*)0
             )
       {
  @@ -1584,7 +1582,7 @@
   {
     size_t idlen=Ustrlen(id);


  -  if (Ustrncmp(filter->pc,id,idlen)==0)
  +  if (strncmpic(US filter->pc,US id,idlen)==0)
     {
       uschar next=filter->pc[idlen];



  Index: version.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/version.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- version.c    15 Jan 2007 15:59:22 -0000    1.21
  +++ version.c    19 Apr 2007 13:19:06 -0000    1.22
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/version.c,v 1.21 2007/01/15 15:59:22 ph10 Exp $ */
  +/* $Cambridge: exim/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