From: Armin Rigo Date: Wed, 23 Jan 2008 14:07:13 +0000 (+0000) Subject: patch 1754489 by vlahan: X-Git-Tag: v2.6a1~451 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=964ca4274f2a1bea783b52e74c71d2dcfdb4fafc;p=python patch 1754489 by vlahan: improve portability of address length calculation for AF_UNIX sockets --- diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 88d2a70a0f..d5114e8768 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -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; }