Re: [exim-dev] Strange Error after 4.50 upgrade ...

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Keith E Smith
CC: exim-dev
Subject: Re: [exim-dev] Strange Error after 4.50 upgrade ...
On Thu, 28 Apr 2005, Keith E Smith wrote:

> [keith@b0201]/opt/exim/spool/input<336>cat 1DRMfg-0004IR-Nu-H
> 1DRMfg-0004IR-Nu-H
> nobody 99 -1


I am preparing the 4.51 release. One of the fixes is this:

PH/34 Change 4.50/80 broke Exim in that it could no longer handle cases where 
      the uid or gid is negative. A case of a negative gid caused this to be
      noticed. The fix allows for either to be negative.                   


It looks like that is what caught you (see the "-1" above). The
candidate code for 4.51 is available in a snapshot:

ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Testing/exim-snapshot.tar.gz
ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Testing/exim-snapshot.tar.gz.sig

Alternatively, the patch (that was sent by a user) is below.


-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.
Get the Exim 4 book:    http://www.uit.co.uk/exim-book





--- spool_in.c-orig     2005-04-01 23:56:20.000000000 +0000
+++ spool_in.c  2005-04-02 00:07:07.000000000 +0000
@@ -329,12 +329,12 @@
 while (p > big_buffer && isspace(p[-1])) p--;
 *p = 0;
 if (!isdigit(p[-1])) goto SPOOL_FORMAT_ERROR;
-while (p > big_buffer && isdigit(p[-1])) p--;
+while (p > big_buffer && (isdigit(p[-1]) || '-' == p[-1])) p--;
 gid = Uatoi(p);
 if (p <= big_buffer || *(--p) != ' ') goto SPOOL_FORMAT_ERROR;
 *p = 0;
 if (!isdigit(p[-1])) goto SPOOL_FORMAT_ERROR;
-while (p > big_buffer && isdigit(p[-1])) p--;
+while (p > big_buffer && (isdigit(p[-1]) || '-' == p[-1])) p--;
 uid = Uatoi(p);
 if (p <= big_buffer || *(--p) != ' ') goto SPOOL_FORMAT_ERROR;
 *p = 0;