[前][次][番号順一覧][スレッド一覧]

ruby-changes:54724

From: naruse <ko1@a...>
Date: Tue, 29 Jan 2019 18:19:57 +0900 (JST)
Subject: [ruby-changes:54724] naruse:r66941 (ruby_2_6): merge revision(s) 66909: [Backport #15555]

naruse	2019-01-29 18:19:52 +0900 (Tue, 29 Jan 2019)

  New Revision: 66941

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=66941

  Log:
    merge revision(s) 66909: [Backport #15555]
    
    tmpdir.rb: permission of user given directory
    
    * lib/tmpdir.rb (Dir.mktmpdir): check if the permission of the
      parent directory only when using the default temporary
      directory, and no check against user given directory.  the
      security is the user's responsibility in that case.
      [ruby-core:91216] [Bug #15555]

  Modified directories:
    branches/ruby_2_6/
  Modified files:
    branches/ruby_2_6/lib/tmpdir.rb
    branches/ruby_2_6/test/test_tmpdir.rb
    branches/ruby_2_6/version.h
Index: ruby_2_6/lib/tmpdir.rb
===================================================================
--- ruby_2_6/lib/tmpdir.rb	(revision 66940)
+++ ruby_2_6/lib/tmpdir.rb	(revision 66941)
@@ -83,14 +83,20 @@ class Dir https://github.com/ruby/ruby/blob/trunk/ruby_2_6/lib/tmpdir.rb#L83
   #  end
   #
   def self.mktmpdir(prefix_suffix=nil, *rest)
-    path = Tmpname.create(prefix_suffix || "d", *rest) {|n| mkdir(n, 0700)}
+    base = nil
+    path = Tmpname.create(prefix_suffix || "d", *rest) {|path, _, _, d|
+      base = d
+      mkdir(path, 0700)
+    }
     if block_given?
       begin
         yield path
       ensure
-        stat = File.stat(File.dirname(path))
-        if stat.world_writable? and !stat.sticky?
-          raise ArgumentError, "parent directory is world writable but not sticky"
+        unless base
+          stat = File.stat(File.dirname(path))
+          if stat.world_writable? and !stat.sticky?
+            raise ArgumentError, "parent directory is world writable but not sticky"
+          end
         end
         FileUtils.remove_entry path
       end
@@ -110,6 +116,7 @@ class Dir https://github.com/ruby/ruby/blob/trunk/ruby_2_6/lib/tmpdir.rb#L116
       if $SAFE > 0 and tmpdir.tainted?
         tmpdir = '/tmp'
       else
+        origdir = tmpdir
         tmpdir ||= tmpdir()
       end
       n = nil
@@ -125,7 +132,7 @@ class Dir https://github.com/ruby/ruby/blob/trunk/ruby_2_6/lib/tmpdir.rb#L132
         path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"\
                "#{n ? %[-#{n}] : ''}#{suffix||''}"
         path = File.join(tmpdir, path)
-        yield(path, n, opts)
+        yield(path, n, opts, origdir)
       rescue Errno::EEXIST
         n ||= 0
         n += 1
Index: ruby_2_6/test/test_tmpdir.rb
===================================================================
--- ruby_2_6/test/test_tmpdir.rb	(revision 66940)
+++ ruby_2_6/test/test_tmpdir.rb	(revision 66941)
@@ -33,6 +33,12 @@ class TestTmpdir < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/ruby_2_6/test/test_tmpdir.rb#L33
         assert_equal(tmpdir, Dir.tmpdir)
         File.chmod(0777, tmpdir)
         assert_not_equal(tmpdir, Dir.tmpdir)
+        newdir = Dir.mktmpdir("d", tmpdir) do |dir|
+          assert_file.directory? dir
+          assert_equal(tmpdir, File.dirname(dir))
+          dir
+        end
+        assert_file.not_exist?(newdir)
         File.chmod(01777, tmpdir)
         assert_equal(tmpdir, Dir.tmpdir)
       ensure
Index: ruby_2_6/version.h
===================================================================
--- ruby_2_6/version.h	(revision 66940)
+++ ruby_2_6/version.h	(revision 66941)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_6/version.h#L1
 #define RUBY_VERSION "2.6.1"
 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 31
+#define RUBY_PATCHLEVEL 32
 
 #define RUBY_RELEASE_YEAR 2019
 #define RUBY_RELEASE_MONTH 1
Index: ruby_2_6
===================================================================
--- ruby_2_6	(revision 66940)
+++ ruby_2_6	(revision 66941)

Property changes on: ruby_2_6
___________________________________________________________________
Modified: svn:mergeinfo
## -0,0 +0,1 ##
   Merged /trunk:r66909

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]