]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 69519 via svnmerge from
authorGregory P. Smith <greg@mad-scientist.com>
Sun, 1 Nov 2009 20:28:48 +0000 (20:28 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Sun, 1 Nov 2009 20:28:48 +0000 (20:28 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r69519 | gregory.p.smith | 2009-02-11 15:45:25 -0800 (Wed, 11 Feb 2009) | 3 lines

  Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
  on LP64 platforms (most 64-bit Linux, bsd, unix systems).
........

Lib/test/test_socket.py
Misc/NEWS
Modules/socketmodule.c

index dabdcfe9d510b5cb7d699c8bf32192dd37568900..7380e3ef3d6705b21843198d24b65469a03fa1ef 100644 (file)
@@ -385,6 +385,14 @@ class GeneralModuleTests(unittest.TestCase):
         # Check that setting it to an invalid type raises TypeError
         self.assertRaises(TypeError, socket.setdefaulttimeout, "spam")
 
+    def testIPv4_inet_aton_fourbytes(self):
+        if not hasattr(socket, 'inet_aton'):
+            return  # No inet_aton, nothing to check
+        # Test that issue1008086 and issue767150 are fixed.
+        # It must return 4 bytes.
+        self.assertEquals('\x00'*4, socket.inet_aton('0.0.0.0'))
+        self.assertEquals('\xff'*4, socket.inet_aton('255.255.255.255'))
+
     def testIPv4toString(self):
         if not hasattr(socket, 'inet_pton'):
             return # No inet_pton() on this platform
index caec215b7d45ee448c888a46f1b87df09d482e62..0b2bd7db290c46be762847917d58d133b490b77f 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -24,6 +24,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #1008086: Fixed socket.inet_aton() to always return 4 bytes even on
+  LP64 platforms (most 64-bit Linux, bsd, unix systems).
+
 - Issue #7246 & Issue #7208: getpass now properly flushes input before
   reading from stdin so that existing input does not confuse it and
   lead to incorrect entry or an IOError.  It also properly flushes it
index 9591c12029b4233f5136bd17c2ad50516f82c6b2..b1b7141d2f2f05c130a786be03cfd71ad7ab0ab3 100644 (file)
@@ -3745,8 +3745,11 @@ socket_inet_aton(PyObject *self, PyObject *args)
 #endif
 
 #if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK)
+#if (SIZEOF_INT != 4)
+#error "Not sure if in_addr_t exists and int is not 32-bits."
+#endif
        /* Have to use inet_addr() instead */
-       unsigned long packed_addr;
+       unsigned int packed_addr;
 #endif
        char *ip_addr;
 
@@ -5284,7 +5287,10 @@ int
 inet_pton(int af, const char *src, void *dst)
 {
        if (af == AF_INET) {
-               long packed_addr;
+#if (SIZEOF_INT != 4)
+#error "Not sure if in_addr_t exists and int is not 32-bits."
+#endif
+               unsigned int packed_addr;
                packed_addr = inet_addr(src);
                if (packed_addr == INADDR_NONE)
                        return 0;