From 94a91b1d60d048dcf75039d6d64ad9ee7e5929f4 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 30 May 2016 07:28:55 +0000 Subject: raddrinfo.c: fix for SHARABLE_MIDDLE_SUBSTRING * ext/socket/raddrinfo.c (host_str, port_str): use RSTRING_LEN instead of strlen, since RSTRING_PTR StringValueCStr may not be NUL-terminated when SHARABLE_MIDDLE_SUBSTRING=1. reported by @tmtms, http://twitter.com/tmtms/status/736910516229005312 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/socket/test_addrinfo.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'test/socket/test_addrinfo.rb') diff --git a/test/socket/test_addrinfo.rb b/test/socket/test_addrinfo.rb index 9908278bbd..9084a604ed 100644 --- a/test/socket/test_addrinfo.rb +++ b/test/socket/test_addrinfo.rb @@ -35,6 +35,11 @@ class TestSocketAddrinfo < Test::Unit::TestCase ai = Addrinfo.ip("") assert_equal([0, "255.255.255.255"], Socket.unpack_sockaddr_in(ai)) + + ai = assert_nothing_raised(SocketError) do + Addrinfo.ip("00000000127.000000000.00000000.0000001x".chop) + end + assert_equal([0, "127.0.0.1"], Socket.unpack_sockaddr_in(ai)) end def test_addrinfo_tcp @@ -44,6 +49,11 @@ class TestSocketAddrinfo < Test::Unit::TestCase assert_equal(Socket::PF_INET, ai.pfamily) assert_equal(Socket::SOCK_STREAM, ai.socktype) assert_include([0, Socket::IPPROTO_TCP], ai.protocol) + + ai = assert_nothing_raised(SocketError) do + Addrinfo.tcp("127.0.0.1", "0000000000000000000000080x".chop) + end + assert_equal([80, "127.0.0.1"], Socket.unpack_sockaddr_in(ai)) end def test_addrinfo_udp -- cgit v1.2.3