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

Góra strony
Delete this message
Reply to this message
Autor: Philip Hazel
Data:  
Dla: exim-cvs
Temat: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim/exim-src/src match.c
ph10 2005/11/15 11:19:38 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog 
    exim-src/src         match.c 
  Log:
  Fix ${if match_address crash when first argument had no @ (and was not
  empty).


  Revision  Changes    Path
  1.263     +4 -0      exim/exim-doc/doc-txt/ChangeLog
  1.11      +14 -4     exim/exim-src/src/match.c


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.262
  retrieving revision 1.263
  diff -u -r1.262 -r1.263
  --- ChangeLog    15 Nov 2005 10:08:24 -0000    1.262
  +++ ChangeLog    15 Nov 2005 11:19:38 -0000    1.263
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.262 2005/11/15 10:08:24 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.263 2005/11/15 11:19:38 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -129,6 +129,10 @@
   PH/14 Add check_rfc2047_length to disable enforcement of RFC 2047 length
         checking when decoding. Apparently there are clients that generate
         overlong encoded strings. Why am I not surprised?
  +
  +PH/15 If the first argument of "${if match_address" was not empty, but did not
  +      contain an "@" character, Exim crashed. Now it writes a panic log message
  +      and treats the condition as false.



Exim version 4.54

  Index: match.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/match.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- match.c    12 Sep 2005 14:03:42 -0000    1.10
  +++ match.c    15 Nov 2005 11:19:38 -0000    1.11
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/match.c,v 1.10 2005/09/12 14:03:42 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/match.c,v 1.11 2005/11/15 11:19:38 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -955,6 +955,20 @@
   DEBUG(D_lists) debug_printf("address match: subject=%s pattern=%s\n",
     subject, pattern);


  +/* Find the subject's domain */
  +
  +sdomain = Ustrrchr(subject, '@');
  +
  +/* The only case where a subject may not have a domain is if the subject is
  +empty. Otherwise, a subject with no domain is a serious configuration error. */
  +
  +if (sdomain == NULL && *subject != 0)
  +  {
  +  log_write(0, LOG_MAIN|LOG_PANIC, "no @ found in the subject of an "
  +    "address list match: subject=\"%s\" pattern=\"%s\"", subject, pattern);
  +  return FAIL;
  +  }
  +
   /* Handle a regular expression, which must match the entire incoming address.
   This may be the empty address. */


@@ -988,10 +1002,6 @@
against. */

if (*subject == 0) return (*pattern == 0)? OK : FAIL;
-
-/* Find the subject's domain */
-
-sdomain = Ustrrchr(subject, '@');

/* If the pattern starts with "@@" we have a split lookup, where the domain is
looked up to obtain a list of local parts. If the subject's local part is just