aboutsummaryrefslogtreecommitdiffstats
path: root/test/socket/test_unix.rb
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-08 12:53:55 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-08 12:53:55 +0000
commit411e9997d2062d7d871f8a4ffe810c8261be4b36 (patch)
tree2a9094e24862a7cc918abdad0d47ad07b2cf0ea9 /test/socket/test_unix.rb
parentc79dac1c3ec4477af4e8a115942c80cfc414f648 (diff)
downloadruby-411e9997d2062d7d871f8a4ffe810c8261be4b36.tar.gz
* ext/socket/extconf.rb: check struct cmsgcred.
* ext/socket/ancdata.c (anc_inspect_passcred_credentials): add "(ucred)". (anc_inspect_socket_creds): show struct cmsgcred too, for FreeBSD. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/socket/test_unix.rb')
-rw-r--r--test/socket/test_unix.rb45
1 files changed, 35 insertions, 10 deletions
diff --git a/test/socket/test_unix.rb b/test/socket/test_unix.rb
index d31999bfd4..31d60e3ff3 100644
--- a/test/socket/test_unix.rb
+++ b/test/socket/test_unix.rb
@@ -296,7 +296,7 @@ class TestUNIXSocket < Test::Unit::TestCase
}
end
- def test_cred_linux
+ def test_cred_ucred
return if /linux/ !~ RUBY_PLATFORM
Dir.mktmpdir {|d|
sockpath = "#{d}/sock"
@@ -306,15 +306,17 @@ class TestUNIXSocket < Test::Unit::TestCase
s.setsockopt(:SOCKET, :PASSCRED, 1)
c.print "a"
msg, cliend_ai, rflags, cred = s.recvmsg
+ inspect = cred.inspect
assert_equal("a", msg)
- assert_match(/ pid=#{$$} /, cred.inspect)
- assert_match(/ uid=#{Process.uid} /, cred.inspect)
- assert_match(/ gid=#{Process.gid}>/, cred.inspect)
+ assert_match(/ pid=#{$$} /, inspect)
+ assert_match(/ uid=#{Process.uid} /, inspect)
+ assert_match(/ gid=#{Process.gid}>/, inspect)
+ assert_match(/ \(ucred\)/, inspect)
}
end
- def test_cred_netbsd
- return if /netbsd/ !~ RUBY_PLATFORM
+ def test_cred_sockcred
+ return if /netbsd|freebsd/ !~ RUBY_PLATFORM
Dir.mktmpdir {|d|
sockpath = "#{d}/sock"
serv = Socket.unix_server_socket(sockpath)
@@ -324,10 +326,33 @@ class TestUNIXSocket < Test::Unit::TestCase
c.print "a"
msg, cliend_ai, rflags, cred = s.recvmsg
assert_equal("a", msg)
- assert_match(/ uid=#{Process.uid} /, cred.inspect)
- assert_match(/ euid=#{Process.euid} /, cred.inspect)
- assert_match(/ gid=#{Process.gid} /, cred.inspect)
- assert_match(/ egid=#{Process.egid} /, cred.inspect)
+ inspect = cred.inspect
+ p inspect
+ assert_match(/ uid=#{Process.uid} /, inspect)
+ assert_match(/ euid=#{Process.euid} /, inspect)
+ assert_match(/ gid=#{Process.gid} /, inspect)
+ assert_match(/ egid=#{Process.egid} /, inspect)
+ assert_match(/ \(sockcred\)/, inspect)
+ }
+ end
+
+ def test_cred_cmsgcred
+ return if /freebsd/ !~ RUBY_PLATFORM
+ Dir.mktmpdir {|d|
+ sockpath = "#{d}/sock"
+ serv = Socket.unix_server_socket(sockpath)
+ c = Socket.unix(sockpath)
+ s, = serv.accept
+ c.sendmsg("a", 0, nil, [:SOCKET, Socket::SCM_CREDS, ""])
+ msg, cliend_ai, rflags, cred = s.recvmsg
+ assert_equal("a", msg)
+ inspect = cred.inspect
+ p inspect
+ assert_match(/ pid=#{$$} /, inspect)
+ assert_match(/ uid=#{Process.uid} /, inspect)
+ assert_match(/ euid=#{Process.euid} /, inspect)
+ assert_match(/ gid=#{Process.gid} /, inspect)
+ assert_match(/ \(cmsgcred\)/, inspect)
}
end