1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/socket/socket.c (sock_s_pack_sockaddr_un): calculate the

correct address length of an abstract socket.

* test/socket/test_unix.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2013-01-29 00:32:05 +00:00
parent 616f2c43c6
commit a1ed445b81
3 changed files with 14 additions and 5 deletions

View file

@ -1,3 +1,10 @@
Tue Jan 29 09:26:20 2013 Shugo Maeda <shugo@ruby-lang.org>
* ext/socket/socket.c (sock_s_pack_sockaddr_un): calculate the
correct address length of an abstract socket.
* test/socket/test_unix.rb: related test.
Mon Jan 28 18:02:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_backtrace.c (rb_debug_inspector_frame_{class,binding,iseq}_get):

View file

@ -1430,7 +1430,7 @@ sock_s_pack_sockaddr_un(VALUE self, VALUE path)
(size_t)RSTRING_LEN(path), sizeof(sockaddr.sun_path));
}
memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path));
addr = rb_str_new((char*)&sockaddr, sizeof(sockaddr));
addr = rb_str_new((char*)&sockaddr, rsock_unix_sockaddr_len(path));
OBJ_INFECT(addr, path);
return addr;

View file

@ -339,10 +339,12 @@ class TestSocket_UNIXSocket < Test::Unit::TestCase
assert_raise(ArgumentError) { UNIXServer.new("a" * 300) }
end
#def test_nul
# # path may contain NULs for abstract unix sockets. [ruby-core:10288]
# assert_raise(ArgumentError) { Socket.sockaddr_un("a\0b") }
#end
def test_abstract_namespace
return if /linux/ !~ RUBY_PLATFORM
addr = Socket.pack_sockaddr_un("\0foo")
assert_match(/\0foo\z/, addr)
assert_equal("\0foo", Socket.unpack_sockaddr_un(addr))
end
def test_dgram_pair
s1, s2 = UNIXSocket.pair(Socket::SOCK_DGRAM)