New submission from Giampaolo Rodola' <g.rod...@gmail.com>:

http://code.google.com/p/pyftpdlib/issues/detail?id=143
This comes from a user who sent me a report via e-mail. Unfortunately I don't 
have an OSX box to test against.

Code which should replicate the problem is this:

import socket, struct
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
s.connect(('localhost', 21))
s.close()

...while this is a fix I think it should work:

Index: Lib/asyncore.py
===================================================================
--- Lib/asyncore.py     (revisione 86084)
+++ Lib/asyncore.py     (copia locale)
@@ -242,7 +242,7 @@
             try:
                 self.addr = sock.getpeername()
             except socket.error, err:
-                if err.args[0] == ENOTCONN:
+                if err.args[0] in (ENOTCONN, EINVAL):
                     # To handle the case where we got an unconnected
                     # socket.
                     self.connected = False


Nosying ixokai as I know he has an OSX box to test against.
Setting "high" priority and type == "security" as asyncore-based servers are 
likely to crash because of this.
It might even make sense to backport the fix in Python 2.6 because of the 
security implications.

----------
components: Library (Lib)
keywords: patch
messages: 120620
nosy: giampaolo.rodola, ixokai
priority: high
severity: normal
stage: patch review
status: open
title: asyncore doesn't properly handle EINVAL on OSX
type: security
versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10340>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to