[Python-checkins] r84236 - in python/branches/py3k: Lib/smtpd.py Misc/NEWS

giampaolo.rodola python-checkins at python.org
Sat Aug 21 20:35:05 CEST 2010


Author: giampaolo.rodola
Date: Sat Aug 21 20:35:05 2010
New Revision: 84236

Log:
fix issue #9129: added proper error handling when accepting new connections in SMTPServer.handle_accept

Modified:
   python/branches/py3k/Lib/smtpd.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/smtpd.py
==============================================================================
--- python/branches/py3k/Lib/smtpd.py	(original)
+++ python/branches/py3k/Lib/smtpd.py	Sat Aug 21 20:35:05 2010
@@ -413,8 +413,21 @@
                 self.__class__.__name__, time.ctime(time.time()),
                 localaddr, remoteaddr), file=DEBUGSTREAM)
 
-    def handle_accept(self):
-        conn, addr = self.accept()
+    def handle_accept(self)
+        try:
+            conn, addr = self.accept()
+        except TypeError:
+            # sometimes accept() might return None
+            return
+        except socket.error, err:
+            # ECONNABORTED might be thrown
+            if err[0] != errno.ECONNABORTED:
+                raise
+            return
+        else:
+            # sometimes addr == None instead of (ip, port)
+            if addr == None:
+                return
         print('Incoming connection from %s' % repr(addr), file=DEBUGSTREAM)
         channel = self.channel_class(self, conn, addr)
 

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Sat Aug 21 20:35:05 2010
@@ -117,6 +117,9 @@
 Library
 -------
 
+- Issue #9129: smtpd.py module is vulnerable to DoS attacks due to missing 
+  error handling when accepting new connections.
+
 - Issue #843590: Make "macintosh" an alias to the "mac_roman" encoding.
 
 - Create os.fsdecode(): decode from the filesystem encoding with


More information about the Python-checkins mailing list