Your message dated Thu, 21 Feb 2008 17:34:39 +0100
with message-id <[EMAIL PROTECTED]>
and subject line Errno is now reset before sanity check
has caused the Debian Bug report #454759,
regarding courier-imap: Useless use of errno value
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [EMAIL PROTECTED]
immediately.)


-- 
454759: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=454759
Debian Bug Tracking System
Contact [EMAIL PROTECTED] with problems
--- Begin Message ---
Package: courier-imap
Version: 4.3.0-1.
Severity: minor
Tags: patch

The error string presented when the uid and/or gid of a maildir is
incorrectly set includes the string for errno.  Because the check is
performed after stat'ing <maildir>/loginexec, it retains the errno value
from that check.  When printing the error message, the string from errno
is (incorrectly) appended:

/usr/bin/imapd .maildir 
* BYE [ALERT] Fatal error: Account's mailbox directory is not owned by
* the correct uid or gid: No such file or directory

strace output:
chdir("/home/<user>/.maildir")         = 0
stat64("loginexec", 0xbfd35804)         = -1 ENOENT (No such file or
directory)
stat64(".", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
geteuid32()                             = 1000
getegid32()                             = 1000
time(NULL)                              = 1197041165
write(1, "* BYE [ALERT] Fatal error: Accou"..., 122* BYE [ALERT] Fatal
error: Account's mailbox directory is not owned by the correct uid or
gid: No such file or directory
) = 122


The errno output originates in write_error_exit function in
imap/imapwrite.c.  In it, if errno is nonzero, errno is translated to a
string and appended (or, if no strerror is present on the system, just
the errno value).

Thefore, a simple one-line patch is sufficient to stop the incorrect
errno appending.  One need only set errno to 0 before calling
write_error_exit:

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.23.8
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash

Versions of packages courier-imap depends on:
ii  courier-authlib               0.60.1-1   Courier authentication library
ii  courier-base                  0.58.0-1   Courier mail server - base system
ii  exim4-daemon-heavy [mail-tran 4.68-2     Exim MTA (v4) daemon with extended
ii  libc6                         2.7-3      GNU C Library: Shared libraries
ii  libfam0                       2.7.0-13   Client library to control the FAM 
ii  libgdbm3                      1.8.3-3    GNU dbm database routines (runtime

courier-imap recommends no packages.

-- debconf information:
  courier-imap/moveconfig: true
diff -uNr original/courier-0.58.0/imap/imapd.c courier-0.58.0/imap/imapd.c
--- original/courier-0.58.0/imap/imapd.c        2007-11-10 14:46:53.000000000 
-0600
+++ courier-0.58.0/imap/imapd.c 2007-12-07 10:24:38.170826094 -0600
@@ -6392,7 +6392,10 @@
 
                if ( buf.st_uid != geteuid() ||
                     buf.st_gid != getegid())
+                    {
+                       errno=0;
                        write_error_exit("Account's mailbox directory is not 
owned by the correct uid or gid");
+                    }
 
                if ( (buf.st_mode & S_IRWXU) != (buf.st_mode & S_IRWXU))
                        write_error_exit("Invalid permissions on account's 
mailbox directory");

--- End Message ---
--- Begin Message ---
version: 0.58.0.20080127

Patch has been applied upstream.

Regards
       Racke

--
LinuXia Systems => http://www.linuxia.de/
Expert Interchange Consulting and System Administration
ICDEVGROUP => http://www.icdevgroup.org/
Interchange Development Team



--- End Message ---

Reply via email to