[svn] commit: r1968 - in /branches/trac185/src/bin/xfrin: ./ tests/xfrin_test.py xfrin.py.in
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri May 28 23:09:09 UTC 2010
Author: jinmei
Date: Fri May 28 23:09:09 2010
New Revision: 1968
Log:
- work around Linux's buggy getaddrinfo() implementation
- make sure an invalid IPv4 address is tested
Modified:
branches/trac185/src/bin/xfrin/ (props changed)
branches/trac185/src/bin/xfrin/tests/xfrin_test.py
branches/trac185/src/bin/xfrin/xfrin.py.in
Modified: branches/trac185/src/bin/xfrin/tests/xfrin_test.py
==============================================================================
--- branches/trac185/src/bin/xfrin/tests/xfrin_test.py (original)
+++ branches/trac185/src/bin/xfrin/tests/xfrin_test.py Fri May 28 23:09:09 2010
@@ -437,9 +437,8 @@
self.assertRaises(XfrinException, self._do_parse)
def test_parse_cmd_params_bad_ip4(self):
- self.args['master'] = '3.3.3'
- # There should be no exception
- self._do_parse()
+ self.args['master'] = '3.3.3.3.3'
+ self.assertRaises(XfrinException, self._do_parse)
def test_parse_cmd_params_bad_ip6(self):
self.args['master'] = '1::1::1'
@@ -450,8 +449,7 @@
self.assertRaises(XfrinException, self._do_parse)
self.args['port'] = '65536'
- # There should be no exception
- self._do_parse()
+ self.assertRaises(XfrinException, self._do_parse)
self.args['port'] = 'http'
self.assertRaises(XfrinException, self._do_parse)
Modified: branches/trac185/src/bin/xfrin/xfrin.py.in
==============================================================================
--- branches/trac185/src/bin/xfrin/xfrin.py.in (original)
+++ branches/trac185/src/bin/xfrin/xfrin.py.in Fri May 28 23:09:09 2010
@@ -489,6 +489,16 @@
signal.signal(signal.SIGINT, signal_handler)
def check_addr_port(addrstr, portstr):
+ # XXX: Linux (glibc)'s getaddrinfo incorrectly accepts numeric port
+ # string larger than 65535. So we need to explicit validate it separately.
+ try:
+ portnum = int(portstr)
+ if portnum < 0 or portnum > 65535:
+ raise ValueError("invalid port number (out of range): " + portstr)
+ except ValueError as err:
+ raise XfrinException("failed to resolve master address/port=%s/%s: %s" %
+ (addrstr, portstr, str(err)))
+
try:
addrinfo = socket.getaddrinfo(addrstr, portstr, socket.AF_UNSPEC,
socket.SOCK_STREAM, socket.IPPROTO_TCP,
More information about the bind10-changes
mailing list