This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vlahan
Recipients
Date 2007-07-15.23:07:19
SpamBayes Score
Marked as misclassified
Message-id
In-reply-to
Content
The calculation of the address length for AF_UNIX sockets in the getsockaddrarg function in socketmodule.c returns wrong values on platforms with padded struct sockaddr_un:

*len_ret = len + sizeof(*addr) - sizeof(addr->sun_path);

sizeof(*addr) is for example 112 on an ARM (NSLU2) platforms, while it is 110 on a i386 PC.

The correct way to calculate the length is by directly using the offset of the sun_path field:

*len_ret = len + offsetof(struct sockaddr_un, sun_path);

as suggested in the GNU libc manual:

http://www.gnu.org/software/libc/manual/html_node/Local-Socket-Example.html

The correction also needs to be applied to the makesockaddr function when reversing the above addition in the case of abstract namespace sockets on linux.
History
Date User Action Args
2007-08-23 15:59:11adminlinkissue1754489 messages
2007-08-23 15:59:11admincreate