[pypy-commit] pypy stdlib-2.7.3: CPython Issue #9975: socket: Fix incorrect use of flowinfo and scope_id.
amauryfa
noreply at buildbot.pypy.org
Thu Jun 14 01:22:45 CEST 2012
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: stdlib-2.7.3
Changeset: r55658:34745c46092a
Date: 2012-06-14 01:22 +0200
http://bitbucket.org/pypy/pypy/changeset/34745c46092a/
Log: CPython Issue #9975: socket: Fix incorrect use of flowinfo and
scope_id.
diff --git a/pypy/rlib/rsocket.py b/pypy/rlib/rsocket.py
--- a/pypy/rlib/rsocket.py
+++ b/pypy/rlib/rsocket.py
@@ -355,7 +355,7 @@
makeipaddr(host, self)
a = self.lock(_c.sockaddr_in6)
rffi.setintfield(a, 'c_sin6_port', htons(port))
- rffi.setintfield(a, 'c_sin6_flowinfo', flowinfo)
+ rffi.setintfield(a, 'c_sin6_flowinfo', htonl(flowinfo))
rffi.setintfield(a, 'c_sin6_scope_id', scope_id)
self.unlock()
@@ -376,7 +376,7 @@
def get_flowinfo(self):
a = self.lock(_c.sockaddr_in6)
- flowinfo = a.c_sin6_flowinfo
+ flowinfo = ntohl(a.c_sin6_flowinfo)
self.unlock()
return rffi.cast(lltype.Unsigned, flowinfo)
@@ -412,6 +412,9 @@
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."))
return INET6Address(host, port, flowinfo, scope_id)
from_object = staticmethod(from_object)
@@ -428,9 +431,12 @@
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."))
a = self.lock(_c.sockaddr_in6)
rffi.setintfield(a, 'c_sin6_port', htons(port))
- rffi.setintfield(a, 'c_sin6_flowinfo', flowinfo)
+ rffi.setintfield(a, 'c_sin6_flowinfo', htonl(flowinfo))
rffi.setintfield(a, 'c_sin6_scope_id', scope_id)
self.unlock()
More information about the pypy-commit
mailing list