From 628c5bdc59449afc0385581859758fba76dbda91 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 25 Oct 2022 16:44:08 +0900 Subject: [PATCH] Reject empty parent path --- 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 55920a4..ee20f1e 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -133,7 +133,11 @@ def next # 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 1adb6a7..e67f8aa 100644 --- a/test/test_tmpdir.rb +++ b/test/test_tmpdir.rb @@ -104,6 +104,12 @@ def test_mktmpdir_traversal_array 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('/') + '/'