merges r28685 from trunk into ruby_1_9_2.

--
* lib/fileutils.rb (FileUtils::Entry_#copy): check file name
  spearator boundary.  [ruby-core:31360]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
yugui 2010-07-24 10:38:16 +00:00
parent 7252a95e73
commit d1a5bcd83f
3 changed files with 26 additions and 1 deletions

View file

@ -1,3 +1,8 @@
Tue Jul 20 12:27:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/fileutils.rb (FileUtils::Entry_#copy): check file name
spearator boundary. [ruby-core:31360]
Mon Jul 19 09:00:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* NEWS (Kernel#instance_eval): add an incompatible change since

View file

@ -1240,7 +1240,7 @@ module FileUtils
when file?
copy_file dest
when directory?
if !File.exist?(dest) and /^#{Regexp.quote(path)}/ =~ File.dirname(dest)
if !File.exist?(dest) and descendant_diretory?(dest, path)
raise ArgumentError, "cannot copy directory %s to itself %s" % [path, dest]
end
begin
@ -1394,6 +1394,17 @@ module FileUtils
return File.path(base) if not dir or dir == '.'
File.join(dir, base)
end
if File::ALT_SEPARATOR
DIRECTORY_TERM = "(?=[/#{Regexp.quote(File::ALT_SEPARATOR)}]|\\z)".freeze
else
DIRECTORY_TERM = "(?=/|\\z)".freeze
end
SYSCASE = File::FNM_SYSCASE.nonzero? ? "-i" : ""
def descendant_diretory?(descendant, ascendant)
/\A(?#{SYSCASE}:#{Regexp.quote(ascendant)})#{DIRECTORY_TERM}/ =~ File.dirname(descendant)
end
end # class Entry_
def fu_list(arg) #:nodoc:

View file

@ -286,6 +286,15 @@ class TestFileUtils
assert_directory 'tmp/cpr_dest/d'
my_rm_rf 'tmp/cpr_src'
my_rm_rf 'tmp/cpr_dest'
bug3588 = '[ruby-core:31360]'
assert_nothing_raised(ArgumentError, bug3588) do
cp_r 'tmp', 'tmp2'
end
assert_directory 'tmp2/tmp'
assert_raise(ArgumentError, bug3588) do
cp_r 'tmp2', 'tmp2/new_tmp2'
end
end
def test_cp_r_symlink