Author: Brian Kearns <[email protected]>
Branch:
Changeset: r70001:13377182ed09
Date: 2014-03-17 00:53 -0400
http://bitbucket.org/pypy/pypy/changeset/13377182ed09/
Log: fix socket exception type for overflowing port/flowinfo
diff --git a/pypy/module/_socket/interp_socket.py
b/pypy/module/_socket/interp_socket.py
--- a/pypy/module/_socket/interp_socket.py
+++ b/pypy/module/_socket/interp_socket.py
@@ -65,10 +65,7 @@
else: flowinfo = 0
if len(pieces_w) > 3: scope_id = space.uint_w(pieces_w[3])
else: scope_id = 0
- if flowinfo < 0 or flowinfo > 0xfffff:
- raise OperationError(space.w_OverflowError, space.wrap(
- "flowinfo must be 0-1048575."))
- flowinfo = rffi.cast(lltype.Unsigned, flowinfo)
+ flowinfo = make_unsigned_flowinfo(space, flowinfo)
a = addr.lock(_c.sockaddr_in6)
rffi.setintfield(a, 'c_sin6_port', rsocket.htons(port))
rffi.setintfield(a, 'c_sin6_flowinfo', rsocket.htonl(flowinfo))
@@ -97,10 +94,7 @@
else: flowinfo = 0
if len(pieces_w) > 3: scope_id = space.uint_w(pieces_w[3])
else: scope_id = 0
- if flowinfo < 0 or flowinfo > 0xfffff:
- raise OperationError(space.w_OverflowError, space.wrap(
- "flowinfo must be 0-1048575."))
- flowinfo = rffi.cast(lltype.Unsigned, flowinfo)
+ flowinfo = make_unsigned_flowinfo(space, flowinfo)
return rsocket.INET6Address(host, port, flowinfo, scope_id)
if rsocket.HAS_AF_UNIX and family == rsocket.AF_UNIX:
return rsocket.UNIXAddress(space.str_w(w_address))
@@ -112,10 +106,16 @@
# XXX Hack to seperate rpython and pypy
def make_ushort_port(space, port):
if port < 0 or port > 0xffff:
- raise OperationError(space.w_ValueError, space.wrap(
+ raise OperationError(space.w_OverflowError, space.wrap(
"port must be 0-65535."))
return rffi.cast(rffi.USHORT, port)
+def make_unsigned_flowinfo(space, flowinfo):
+ if flowinfo < 0 or flowinfo > 0xfffff:
+ raise OperationError(space.w_OverflowError, space.wrap(
+ "flowinfo must be 0-1048575."))
+ return rffi.cast(lltype.Unsigned, flowinfo)
+
# XXX Hack to seperate rpython and pypy
def ipaddr_from_object(space, w_sockaddr):
host = space.str_w(space.getitem(w_sockaddr, space.wrap(0)))
diff --git a/pypy/module/_socket/test/test_sock_app.py
b/pypy/module/_socket/test/test_sock_app.py
--- a/pypy/module/_socket/test/test_sock_app.py
+++ b/pypy/module/_socket/test/test_sock_app.py
@@ -425,8 +425,13 @@
def test_bigport(self):
import _socket
s = _socket.socket()
- raises(ValueError, s.connect, ("localhost", 1000000))
- raises(ValueError, s.connect, ("localhost", -1))
+ exc = raises(OverflowError, s.connect, ("localhost", -1))
+ assert "port must be 0-65535." in str(exc.value)
+ exc = raises(OverflowError, s.connect, ("localhost", 1000000))
+ assert "port must be 0-65535." in str(exc.value)
+ s = _socket.socket(_socket.AF_INET6)
+ exc = raises(OverflowError, s.connect, ("::1", 1234, 1048576))
+ assert "flowinfo must be 0-1048575." in str(exc.value)
def test_NtoH(self):
import sys
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit