From 90340eb8f2c5bf820eabd3c25fb39e45285b1c40 Mon Sep 17 00:00:00 2001 From: Hleb Valoshka <375gnu@gmail.com> Date: Wed, 4 Sep 2013 15:07:19 +0300 Subject: Create own directory for every unix socket in unit tests [ew: this avoids a TOCTOU issue for multiple test invocations] Signed-off-by: Eric Wong --- test/lib_read_write.rb | 2 ++ test/lib_server_accept.rb | 2 ++ test/test_unix_client_read_server_write.rb | 4 +++- test/test_unix_connect.rb | 5 ++++- test/test_unix_server.rb | 4 +++- test/test_unix_server_read_client_write.rb | 4 +++- 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/test/lib_read_write.rb b/test/lib_read_write.rb index 5034db8..cac87b7 100644 --- a/test/lib_read_write.rb +++ b/test/lib_read_write.rb @@ -2,6 +2,7 @@ require 'test/unit' require 'io/nonblock' require 'digest/sha1' +require 'fileutils' $-w = true require 'kgio' @@ -11,6 +12,7 @@ module LibReadWriteTest def teardown @rd.close if defined?(@rd) && ! @rd.closed? @wr.close if defined?(@wr) && ! @wr.closed? + FileUtils.remove_entry_secure(@tmpdir) if defined?(@tmpdir) end def test_write_empty diff --git a/test/lib_server_accept.rb b/test/lib_server_accept.rb index ff0f733..db0d120 100644 --- a/test/lib_server_accept.rb +++ b/test/lib_server_accept.rb @@ -1,6 +1,7 @@ require 'test/unit' require 'fcntl' require 'io/nonblock' +require 'fileutils' $-w = true require 'kgio' @@ -8,6 +9,7 @@ module LibServerAccept def teardown @srv.close unless @srv.closed? + FileUtils.remove_entry_secure(@tmpdir) if defined?(@tmpdir) Kgio.accept_cloexec = true Kgio.accept_nonblock = false end diff --git a/test/test_unix_client_read_server_write.rb b/test/test_unix_client_read_server_write.rb index f5d481a..2f2b7b9 100644 --- a/test/test_unix_client_read_server_write.rb +++ b/test/test_unix_client_read_server_write.rb @@ -1,9 +1,11 @@ require './test/lib_read_write' require 'tempfile' +require 'tmpdir' class TestUnixClientReadServerWrite < Test::Unit::TestCase def setup - tmp = Tempfile.new('kgio_unix_0') + @tmpdir = Dir.mktmpdir('kgio_unix_0') + tmp = Tempfile.new('kgio_unix_0', @tmpdir) @path = tmp.path File.unlink(@path) tmp.close rescue nil diff --git a/test/test_unix_connect.rb b/test/test_unix_connect.rb index 007f422..60cb8c0 100644 --- a/test/test_unix_connect.rb +++ b/test/test_unix_connect.rb @@ -3,6 +3,7 @@ require 'io/nonblock' $-w = true require 'kgio' require 'tempfile' +require 'tmpdir' class SubSocket < Kgio::Socket attr_accessor :foo @@ -14,7 +15,8 @@ end class TestKgioUnixConnect < Test::Unit::TestCase def setup - tmp = Tempfile.new('kgio_unix_1') + @tmpdir = Dir.mktmpdir('kgio_unix_1') + tmp = Tempfile.new('kgio_unix_1', @tmpdir) @path = tmp.path File.unlink(@path) tmp.close rescue nil @@ -25,6 +27,7 @@ class TestKgioUnixConnect < Test::Unit::TestCase def teardown @srv.close unless @srv.closed? File.unlink(@path) + FileUtils.remove_entry_secure(@tmpdir) Kgio.accept_cloexec = true end diff --git a/test/test_unix_server.rb b/test/test_unix_server.rb index b15d9ec..02e4d8d 100644 --- a/test/test_unix_server.rb +++ b/test/test_unix_server.rb @@ -1,10 +1,12 @@ require 'tempfile' +require 'tmpdir' require './test/lib_server_accept' class TestKgioUNIXServer < Test::Unit::TestCase def setup - tmp = Tempfile.new('kgio_unix_2') + @tmpdir = Dir.mktmpdir('kgio_unix_2') + tmp = Tempfile.new('kgio_unix_2', @tmpdir) @path = tmp.path File.unlink(@path) tmp.close rescue nil diff --git a/test/test_unix_server_read_client_write.rb b/test/test_unix_server_read_client_write.rb index 0f57bfe..a994e01 100644 --- a/test/test_unix_server_read_client_write.rb +++ b/test/test_unix_server_read_client_write.rb @@ -1,9 +1,11 @@ require './test/lib_read_write' require 'tempfile' +require 'tmpdir' class TestUnixServerReadClientWrite < Test::Unit::TestCase def setup - tmp = Tempfile.new('kgio_unix_3') + @tmpdir = Dir.mktmpdir('kgio_unix_3') + tmp = Tempfile.new('kgio_unix_3', @tmpdir) @path = tmp.path File.unlink(@path) tmp.close rescue nil -- cgit v1.2.3-24-ge0c7