diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb index fe3e0e19d1..66ac7cfb32 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -148,7 +148,11 @@ class Dir # Generates and yields random names to create a temporary name def create(basename, tmpdir=nil, max_try: nil, **opts) origdir = tmpdir - tmpdir ||= tmpdir() + if tmpdir + raise ArgumentError, "empty parent path" if tmpdir.empty? + else + tmpdir = tmpdir() + end n = nil prefix, suffix = basename prefix = (String.try_convert(prefix) or diff --git a/test/test_tmpdir.rb b/test/test_tmpdir.rb index 054ca15d7a..eae0610c87 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -104,6 +104,12 @@ class TestTmpdir < Test::Unit::TestCase end end + def test_mktmpdir_not_empty_parent + assert_raise(ArgumentError) do + Dir.mktmpdir("foo", "") + end + end + def assert_mktmpdir_traversal Dir.mktmpdir do |target| target = target.chomp('/') + '/'