pathname: atomic_write shouldn't make dir sticky unless world writable
				
					
				
			This commit is contained in:
		
							parent
							
								
									c56c3907e5
								
							
						
					
					
						commit
						98016b0ac6
					
				@ -165,13 +165,14 @@ class Pathname
 | 
			
		||||
    # The enclosing `mktmpdir` and the `chmod` are a workaround
 | 
			
		||||
    # for https://github.com/rails/rails/pull/34037.
 | 
			
		||||
    Dir.mktmpdir(".d", dirname) do |tmpdir|
 | 
			
		||||
      should_fix_sticky_bit = dirname.world_writable? && !dirname.sticky?
 | 
			
		||||
      FileUtils.chmod "+t", dirname if should_fix_sticky_bit
 | 
			
		||||
      begin
 | 
			
		||||
        FileUtils.chmod "+t", dirname
 | 
			
		||||
      rescue Errno::EPERM
 | 
			
		||||
        :ignore
 | 
			
		||||
      end
 | 
			
		||||
      File.atomic_write(self, tmpdir) do |file|
 | 
			
		||||
        file.write(content)
 | 
			
		||||
        File.atomic_write(self, tmpdir) do |file|
 | 
			
		||||
          file.write(content)
 | 
			
		||||
        end
 | 
			
		||||
      ensure
 | 
			
		||||
        FileUtils.chmod "-t", dirname if should_fix_sticky_bit
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user