]> git.eshelyaron.com Git - emacs.git/commitdiff
Catch IPv4/IPv6 issues at compile time
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 17 May 2017 17:27:31 +0000 (10:27 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 17 May 2017 17:59:02 +0000 (10:59 -0700)
* src/process.c (connect_network_socket): Use verify,
not eassert, so that any problems are caught at compile-time.
Avoid dodgy cast by using a local var of the correct type.

src/process.c

index ecb1b0ca6df9365de84048ef5e6df398e80801be..8180feaba9a5d17861351fc62eb8d89c4ce06e15 100644 (file)
@@ -3430,11 +3430,11 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
              /* The code below assumes the port is at the same offset
                 and of the same width in both IPv4 and IPv6
                 structures, but the standards don't guarantee that,
-                so we have this assertion to make sure.  */
-             eassert ((offsetof (struct sockaddr_in, sin_port)
-                       == offsetof (struct sockaddr_in6, sin6_port))
-                      && (sizeof (sa1.sin_port)
-                          == sizeof (((struct sockaddr_in6 *) &sa1)->sin6_port)));
+                so verify it here.  */
+             struct sockaddr_in6 sa6;
+             verify ((offsetof (struct sockaddr_in, sin_port)
+                      == offsetof (struct sockaddr_in6, sin6_port))
+                     && sizeof (sa1.sin_port) == sizeof (sa6.sin6_port));
 #endif
              if (getsockname (s, (struct sockaddr *)&sa1, &len1) == 0)
                {