From 01f9766aa05182a7bbdc914a5dcd8a36ebade861 Mon Sep 17 00:00:00 2001 From: Martin Emde Date: Sun, 17 Dec 2023 13:22:38 -0800 Subject: Ensure File.open applies default umask on gem extract --- lib/rubygems/package.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb index 387e40ffd7..7b4cab7964 100644 --- a/lib/rubygems/package.rb +++ b/lib/rubygems/package.rb @@ -448,13 +448,15 @@ EOM end unless directories.include?(mkdir) - FileUtils.mkdir_p mkdir, mode: dir_mode ? 0o755 : (entry.header.mode if entry.directory?) + mkdir_mode = 0o755 if dir_mode + mkdir_mode ||= entry.header.mode if entry.directory? + mkdir_mode &= ~File.umask if mkdir_mode + FileUtils.mkdir_p mkdir, mode: mkdir_mode directories << mkdir end if entry.file? - File.open(destination, "wb") {|out| copy_stream(entry, out) } - FileUtils.chmod file_mode(entry.header.mode), destination + File.open(destination, "wb", file_mode(entry.header.mode)) {|out| copy_stream(entry, out) } end verbose destination -- cgit v1.2.3