mirror of
https://github.com/gosticks/brew.git
synced 2026-10-06 07:26:56 +00:00
Set close-on-exec on lock file descriptors
The formula locks used by the installer and commands like link and unlink are backed by open files and flock(). The open file descriptors are thus leaked to any subprocesses. This can result in weird behavior in programs spawned from formula that do not expect to inherit these descriptors. Fix this by setting close-on-exec on the lock file descriptors. Fixes Homebrew/homebrew#21486.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
require 'fcntl'
|
||||
|
||||
class FormulaLock
|
||||
LOCKDIR = HOMEBREW_CACHE_FORMULA
|
||||
|
||||
@@ -33,7 +35,9 @@ class FormulaLock
|
||||
|
||||
def get_or_create_lockfile
|
||||
if @lockfile.nil? || @lockfile.closed?
|
||||
@path.open(File::RDWR | File::CREAT)
|
||||
@lockfile = @path.open(File::RDWR | File::CREAT)
|
||||
@lockfile.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
|
||||
@lockfile
|
||||
else
|
||||
@lockfile
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user