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;