]> granicus.if.org Git - python/commitdiff
patch 1754489 by vlahan:
authorArmin Rigo <arigo@tunes.org>
Wed, 23 Jan 2008 14:07:13 +0000 (14:07 +0000)
committerArmin Rigo <arigo@tunes.org>
Wed, 23 Jan 2008 14:07:13 +0000 (14:07 +0000)
improve portability of address length calculation for AF_UNIX sockets

Modules/socketmodule.c

index 88d2a70a0fd9d72b42d9345466a288becd417dee..d5114e87686c0feccfdfbd2f3878523a5ac2d0dc 100644 (file)
@@ -1001,7 +1001,7 @@ makesockaddr(int sockfd, struct sockaddr *addr, int addrlen, int proto)
                struct sockaddr_un *a = (struct sockaddr_un *) addr;
 #ifdef linux
                if (a->sun_path[0] == 0) {  /* Linux abstract namespace */
-                       addrlen -= (sizeof(*a) - sizeof(a->sun_path));
+                       addrlen -= offsetof(struct sockaddr_un, sun_path);
                        return PyString_FromStringAndSize(a->sun_path,
                                                          addrlen);
                }
@@ -1207,7 +1207,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
 #if defined(PYOS_OS2)
                *len_ret = sizeof(*addr);
 #else
-               *len_ret = len + sizeof(*addr) - sizeof(addr->sun_path);
+               *len_ret = len + offsetof(struct sockaddr_un, sun_path);
 #endif
                return 1;
        }