Author: Brian Kearns <[email protected]>
Branch:
Changeset: r69805:7f520002bb83
Date: 2014-03-08 12:05 -0800
http://bitbucket.org/pypy/pypy/changeset/7f520002bb83/
Log: work around crash in getaddrinfo on osx (cpython issue17269)
diff --git a/rpython/rlib/rsocket.py b/rpython/rlib/rsocket.py
--- a/rpython/rlib/rsocket.py
+++ b/rpython/rlib/rsocket.py
@@ -1148,6 +1148,9 @@
address_to_fill=None):
# port_or_service is a string, not an int (but try str(port_number)).
assert port_or_service is None or isinstance(port_or_service, str)
+ if _c._MACOSX:
+ if port_or_service is None or port_or_service == '0':
+ port_or_service = '00'
hints = lltype.malloc(_c.addrinfo, flavor='raw', zero=True)
rffi.setintfield(hints, 'c_ai_family', family)
rffi.setintfield(hints, 'c_ai_socktype', socktype)
diff --git a/rpython/rlib/test/test_rsocket.py
b/rpython/rlib/test/test_rsocket.py
--- a/rpython/rlib/test/test_rsocket.py
+++ b/rpython/rlib/test/test_rsocket.py
@@ -328,6 +328,11 @@
found = True
assert found, lst
+def test_getaddrinfo_osx_crash():
+ # see CPython issue17269
+ for port in [None, '0', '00']:
+ getaddrinfo('localhost', port, 0, 0, 0, AI_NUMERICSERV)
+
def test_connect_ex():
s = RSocket()
err = s.connect_ex(INETAddress('0.0.0.0', 0)) # should not work
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit