From a79907ed5e8014215a658f4731ff33df3aca9eaa Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 25 Oct 2022 16:44:08 +0900 Subject: [PATCH] [ruby/tmpdir] Reject empty parent path https://github.com/ruby/tmpdir/commit/628c5bdc59 --- lib/tmpdir.rb | 6 +++++- test/test_tmpdir.rb | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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('/') + '/'