Kaydet (Commit) 964ca427 authored tarafından Armin Rigo's avatar Armin Rigo

patch 1754489 by vlahan:

improve portability of address length calculation for AF_UNIX sockets
üst 501dbbfb
...@@ -1001,7 +1001,7 @@ makesockaddr(int sockfd, struct sockaddr *addr, int addrlen, int proto) ...@@ -1001,7 +1001,7 @@ makesockaddr(int sockfd, struct sockaddr *addr, int addrlen, int proto)
struct sockaddr_un *a = (struct sockaddr_un *) addr; struct sockaddr_un *a = (struct sockaddr_un *) addr;
#ifdef linux #ifdef linux
if (a->sun_path[0] == 0) { /* Linux abstract namespace */ 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, return PyString_FromStringAndSize(a->sun_path,
addrlen); addrlen);
} }
...@@ -1207,7 +1207,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args, ...@@ -1207,7 +1207,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
#if defined(PYOS_OS2) #if defined(PYOS_OS2)
*len_ret = sizeof(*addr); *len_ret = sizeof(*addr);
#else #else
*len_ret = len + sizeof(*addr) - sizeof(addr->sun_path); *len_ret = len + offsetof(struct sockaddr_un, sun_path);
#endif #endif
return 1; return 1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment