summaryrefslogtreecommitdiffstats
path: root/Modules/socketmodule.c
diff options
context:
space:
mode:
authorJeffrey Yasskin <jyasskin@gmail.com>2009-01-09 16:47:07 (GMT)
committerJeffrey Yasskin <jyasskin@gmail.com>2009-01-09 16:47:07 (GMT)
commitd89f5b20b2e00241eebd8ca592520c429d6f0d4c (patch)
tree80a83cfb9b09ee68a91db223c4fbc2e170aa1291 /Modules/socketmodule.c
parent343b970da9404be5cf6ef3544a11d9da014b4f42 (diff)
downloadcpython-d89f5b20b2e00241eebd8ca592520c429d6f0d4c.zip
cpython-d89f5b20b2e00241eebd8ca592520c429d6f0d4c.tar.gz
cpython-d89f5b20b2e00241eebd8ca592520c429d6f0d4c.tar.bz2
Fix issue 4884, preventing a crash in the socket code when python is compiled
with llvm-gcc and run with a glibc <2.10.
Diffstat (limited to 'Modules/socketmodule.c')
-rw-r--r--Modules/socketmodule.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index deff28a..c1e3cfe 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -3334,7 +3334,11 @@ socket_gethostbyaddr(PyObject *self, PyObject *args)
#ifdef HAVE_GETHOSTBYNAME_R_3_ARG
struct hostent_data data;
#else
- char buf[16384];
+ /* glibcs up to 2.10 assume that the buf argument to
+ gethostbyaddr_r is 8-byte aligned, which at least llvm-gcc
+ does not ensure. The attribute below instructs the compiler
+ to maintain this alignment. */
+ char buf[16384] Py_ALIGNED(8);
int buf_len = (sizeof buf) - 1;
int errnop;
#endif