Merge pull request #5127 from lembacon/atomic_write-sticky
pathname: `atomic_write` shouldn't make dir sticky unless world writable
This commit is contained in:
commit
8b3228ad8a
@ -165,14 +165,15 @@ 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)
|
||||
end
|
||||
ensure
|
||||
FileUtils.chmod "-t", dirname if should_fix_sticky_bit
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user