Hi,
I'm one of your Qpopper LX Beta Testers.
With this email I forward you a message in which I reported you the bug
in the accept() system call, bug that you have solved in the last
version of QPopper following my indications.
I have seen that in the Revisions part of the INSTALL file you have said
that this bug was reported by Stevens:

 *     12/21/00  [rcg]
 *              - Ignore additional accept() errors, per Stevens 5.11

The bug was reported by me, not by Stevens. Stevens is the author of the
book in which explains the problem, but I'm the person who discovered
the bug.

I'm very very disappointed about this.
I believe that you must be more careful with the people reporting bugs
to you, and helping you make your software (now comercial software) more
powerfull and stable. The only thing I want is appear as a bug reporter:
 *              - Ignore additional accept() errors, per Carles Xavier
Munyoz Baldo


I hope that this will be a mistake and you will correct it soon.
If you don't correct it you will lost a beta tester and a bug reporter.

Greetings.
---
Carles Xavier Munyoz Baldó / [EMAIL PROTECTED]
Servicios IP - Experto en Sistemas IP
Wanadoo España - http://www.wanadoo.es/
Tel: +34 96 5040046 - Fax: +34 96 5040047
---


Hi,
I'm using the POP server QPopper 3.1.2 in standalone mode in my
UltraSparc computer with Solaris 2.6.

I have seen that sometimes (once time every day, approximately) the
listening popper process dies. Using the truss command (a system call
tracer) over the listening popper process I have discovered the reason
for which this process dies:
accept(3, 0xEFFFFC60, 0xEFFFFC24)               = 5
fork()                                          = 26330
close(5)                                        = 0
accept(3, 0xEFFFFC60, 0xEFFFFC24)               = 5
fork()                                          = 26331
close(5)                                        = 0
accept(3, 0xEFFFFC60, 0xEFFFFC24)               = 5
fork()                                          = 26332
close(5)                                        = 0
accept(3, 0xEFFFFC60, 0xEFFFFC24)               Err#130 ECONNABORTED
write(2, " p o p p e r :   S e r v".., 71)      Err#9 EBADF
fstat(4, 0xEFFFF5F0)                            = 0
time()                                          = 976629260
getpid()                                        = 1222 [1]
putmsg(4, 0xEFFFECA8, 0xEFFFEC9C, 0)            = 0
open("/etc/.syslog_door", O_RDONLY)             = 5
door_info(5, 0xEFFFEBE0)                        = 0
getpid()                                        = 1222 [1]
door_call(5, 0xEFFFEBC8)                        = 0
close(5)                                        = 0
sigaction(SIGABRT, 0x00000000, 0xEFFFFB10)      = 0
llseek(0, 0, SEEK_CUR)                          = 0
llseek(3, 0, SEEK_CUR)                          Err#29 ESPIPE
llseek(2, 0, SEEK_CUR)                          = 0
sigaction(SIGABRT, 0xEFFFF9E0, 0xEFFFFA60)      = 0
sigfillset(0xEF629808)                          = 0
sigprocmask(SIG_UNBLOCK, 0xEFFFFA90, 0x00000000) = 0
getpid()                                        = 1222 [1]
kill(1222, SIGABRT)                             = 0
    Received signal #6, SIGABRT [default]
      siginfo: SIGABRT pid=1222 uid=0
        *** process killed ***


Looking at the source code I have seen that Qpopper considers the
ECONNABORTED error returned by the system call accept as a fatal error
and when it receives it, finish its execution.

This may be used as a DNS attack, for this reason I have made this patch
to the main.c file:
504c504
<             if ( errno == EINTR )
---
>             if ( errno == EINTR || errno==ECONNABORTED || errno==EPROTO )


In the attached image of this email you can see the section 5.11 of the
book Unix Network Programming (W. Richard Stevens, ISBN: 0-13-490012-X),
in which Stevens explains when the errors ECONNABORTED and EPROTO are
generated by the system call accept, and why they are considered
nonfatal errors.

I hope this helps you and wait for news about this possible bug.
Greetings.
---
Carles Xavier Munyoz Baldó / [EMAIL PROTECTED]
Servicios IP - Experto en Sistemas IP
Wanadoo España - http://www.wanadoo.es/
Tel: +34 96 5040046 - Fax: +34 96 5040047
---

GIF image



Reply via email to