------- You are receiving this mail because: -------
You are on the CC list for the bug.

http://bugs.exim.org/show_bug.cgi?id=770
           Summary: Daemon should reinitialize len before calling accept()
           Product: Exim
           Version: 4.69
          Platform: All
        OS/Version: FreeBSD
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Networking
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]
                CC: [email protected]


Created an attachment (id=279)
 --> (http://bugs.exim.org/attachment.cgi?id=279)
reinitialize len before calling accept()

In src/daemon.c, initialization for len argument of accept() syscall is done
only once per loop over active listening sockets.  As a result if operation
system modifies len for some reason, for next socket accept() may be called
with invalid value of len.

At least FreeBSD resets len to 0 on error returned from accept() - and it may
happend e.g. on ECONNABORTED (i.e. client timed out before exim accepted
connection).

I've found this while digging into problem reported by Dmitriy Kirhlarov on
exim-user mailing list (http://permalink.gmane.org/gmane.mail.exim.user/80428).
 Dmitriy was observing connections being treated as connections from completely
unrelated ips as a result of this bug.

Patch attached.  It was tested by Dmitriy Kirhlarov and resolves his problem.


-- 
Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email

-- 
## List details at http://lists.exim.org/mailman/listinfo/exim-dev Exim details 
at http://www.exim.org/ ##

Reply via email to