diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-06-13 13:12:35 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-06-13 13:12:35 +0000 |
commit | 4b5267018abbc600b63784c7d163af2ef8d24429 (patch) | |
tree | 4aa1e6a702babfae6ea38c9e2a53084975923da5 | |
parent | d479419ad30afaf3c13ca3a895f9779858f4587c (diff) | |
download | ruby-4b5267018abbc600b63784c7d163af2ef8d24429.tar.gz |
fileutils.rb: fix traversal loop
* lib/fileutils.rb (FileUtils#rmdir): fix traversal loop, not trying
remove same directory only.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/fileutils.rb | 1 | ||||
-rw-r--r-- | test/fileutils/test_fileutils.rb | 1 |
3 files changed, 7 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Thu Jun 13 22:12:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * lib/fileutils.rb (FileUtils#rmdir): fix traversal loop, not trying + remove same directory only. + Thu Jun 13 21:30:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> * configure.in (opt-dir), tool/ifchange: get rid of "alternate value" diff --git a/lib/fileutils.rb b/lib/fileutils.rb index 5bdeeaeb08..a23da622e8 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -273,6 +273,7 @@ module FileUtils Dir.rmdir(dir = remove_tailing_slash(dir)) if parents until (parent = File.dirname(dir)) == '.' or parent == dir + dir = parent Dir.rmdir(dir) end end diff --git a/test/fileutils/test_fileutils.rb b/test/fileutils/test_fileutils.rb index 4ad959a32f..1317a5b043 100644 --- a/test/fileutils/test_fileutils.rb +++ b/test/fileutils/test_fileutils.rb @@ -1239,6 +1239,7 @@ class TestFileUtils assert_nothing_raised(Errno::ENOENT) { rmdir(subdir, parents: true) } + assert_file_not_exist(subdir) assert_file_not_exist('data/sub') assert_directory('data') end |