Package: fetchmail
Version: 6.3.4-1
Severity: important

$ echo >/home/pryzbyj/.fetchmail.pid
$ fetchmail; echo $?
0
$

|execve("/usr/bin/fetchmail", ["fetchmail"], [/* 27 vars */]) = 0
[...]

Start of real stuff:
|stat64("/home/pryzbyj/.fetchmailrc", {st_mode=S_IFREG|0600, st_size=434, ...}) 
= 0
|lstat64("/home/pryzbyj/.fetchmailrc", {st_mode=S_IFREG|0600, st_size=434, 
...}) = 0
|geteuid32()                             = 1000

It notices that there's an rc file:
|open("/home/pryzbyj/.fetchmailrc", O_RDONLY) = 4

WTF?
|ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0xafa04e58) = -1 ENOTTY (Inappropriate 
ioctl for device)

[...]

Notices there's a PID file:
|lstat64("/home/pryzbyj/.fetchids", 0xafa0539c) = -1 ENOENT (No such file or 
directory)
|lstat64("/home/pryzbyj/.fetchids", 0xafa0518c) = -1 ENOENT (No such file or 
directory)
|open("/home/pryzbyj/.fetchids", O_RDONLY) = -1 ENOENT (No such file or 
directory)
|getuid32()                              = 1000
|setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=0}) = 0
|open("/home/pryzbyj/.netrc", O_RDONLY)  = 4
|fstat64(4, {st_mode=S_IFREG|0600, st_size=269, ...}) = 0
|mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xa7eee000
|read(4, "machine jupiter2\nlogin pryzju01\n"..., 4096) = 269
|read(4, "", 4096)                       = 0
|close(4)                                = 0
|munmap(0xa7eee000, 4096)                = 0
|open("/home/pryzbyj/.fetchmail.pid", O_RDONLY) = 4

Which lacks a PID:
|fstat64(4, {st_mode=S_IFREG|0644, st_size=1, ...}) = 0
|mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xa7eee000
|read(4, "\n", 4096)                     = 1
|read(4, "", 4096)                       = 0

Huh?  Yes, we are a process..
|kill(0, SIG_0)                          = 0
|close(4)                                = 0

Well, it seems to have decided that since there was a pidfile, even
though it found no pid (bug), to fork:

|munmap(0xa7eee000, 4096)                = 0
|rt_sigaction(SIGCHLD, {0x80588b0, [], SA_RESTART|SA_NOCLDSTOP}, {SIG_DFL}, 8) 
= 0
|rt_sigaction(SIGPWR, {0x80588b0, [], SA_RESTART|SA_NOCLDSTOP}, NULL, 8) = 0
|getppid()                               = 20097
|rt_sigaction(SIGTTOU, {SIG_IGN}, {SIG_DFL}, 8) = 0
|rt_sigaction(SIGTTIN, {SIG_IGN}, {SIG_DFL}, 8) = 0
|rt_sigaction(SIGTSTP, {SIG_IGN}, {SIG_DFL}, 8) = 0
|clone(Process 20099 attached
|child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0xa7bd3708) = 20099
|[pid 20098] exit_group(0)               = ?
|Process 20098 detached
|setsid()                                = 20099
|close(19)                               = -1 EBADF (Bad file descriptor)
|close(18)                               = -1 EBADF (Bad file descriptor)
|close(17)                               = -1 EBADF (Bad file descriptor)
|close(16)                               = -1 EBADF (Bad file descriptor)
|close(15)                               = -1 EBADF (Bad file descriptor)
|close(14)                               = -1 EBADF (Bad file descriptor)
|close(13)                               = -1 EBADF (Bad file descriptor)
|close(12)                               = -1 EBADF (Bad file descriptor)
|close(11)                               = -1 EBADF (Bad file descriptor)
|close(10)                               = -1 EBADF (Bad file descriptor)
|close(9)                                = -1 EBADF (Bad file descriptor)
|close(8)                                = -1 EBADF (Bad file descriptor)
|close(7)                                = -1 EBADF (Bad file descriptor)
|close(6)                                = -1 EBADF (Bad file descriptor)
|close(5)                                = 0
|close(4)                                = -1 EBADF (Bad file descriptor)
|close(3)                                = 0

This explains why it fails silently:
|close(2)                                = 0
|close(1)                                = 0
|close(0)                                = 0
|open("/dev/null", O_RDWR)               = 0
|dup(0)                                  = 1
|dup(0)                                  = 2

It *tries* to tell me something:
|umask(022)                              = 077
|rt_sigaction(SIGCHLD, {0x80588b0, [], SA_RESTART|SA_NOCLDSTOP}, {0x80588b0, 
[], SA_RESTART|SA_NOCLDSTOP}, 8) = 0
|rt_sigaction(SIGPWR, {0x80588b0, [], SA_RESTART|SA_NOCLDSTOP}, NULL, 8) = 0
|fstat64(1, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
|ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xafd9d1b4) = -1 ENOTTY (Inappropriate 
ioctl for device)
|mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xa7f89000
|write(1, "fetchmail: starting fetchmail 6."..., 44) = 44
|rt_sigaction(SIGUSR1, {SIG_IGN}, {SIG_DFL}, 8) = 0
|getuid32()                              = 1000
|uname({sys="Linux", node="andromeda", ...}) = 0
|umask(077)                              = 022
|rt_sigaction(SIGABRT, {0x8051e30, [], SA_RESTART}, {SIG_DFL}, 8) = 0
|rt_sigaction(SIGINT, {0x8051e30, [], SA_RESTART}, {SIG_DFL}, 8) = 0
|rt_sigaction(SIGTERM, {0x8051e30, [], SA_RESTART}, {SIG_DFL}, 8) = 0
|rt_sigaction(SIGALRM, {0x8051e30, [], 0}, {SIG_DFL}, 8) = 0
|rt_sigaction(SIGPIPE, {0x8051e30, [], SA_RESTART}, {SIG_DFL}, 8) = 0
|rt_sigaction(SIGQUIT, {0x8051e30, [], SA_RESTART}, {SIG_DFL}, 8) = 0

Here, it assumes the file doesn't exist
|open("/home/pryzbyj/.fetchmail.pid", O_WRONLY|O_CREAT|O_EXCL, 0666) = -1 
EEXIST (File exists)
|dup(2)                                  = 3
|fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
|fstat64(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
|ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xafd9d290) = -1 ENOTTY (Inappropriate 
ioctl for device)
|mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xa7f88000
|_llseek(3, 0, [0], SEEK_CUR)            = 0

And again *tries* to say something:
|write(3, "/home/pryzbyj/.fetchmail.pid: Fi"..., 42) = 42
|close(3)                                = 0
|munmap(0xa7f88000, 4096)                = 0
|write(2, "fetchmail: lock creation failed."..., 33) = 33
|munmap(0xa7f89000, 4096)                = 0
|exit_group(8)                           = ?
|Process 20056 detached

So the second bug is that it tries but fails to report an error to me,
when it has already inhibited its own ability to do so.  It either
needs to not do that, or open("/dev/console") or "/dev/tty", or
"/dev/tty0" or some such in order to write to it, or to use some
syslog/msg foo (which shouldn't be necessary).


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to