mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
Close file descirptor before fork
FreeBSD chroot(2) fails with EPERM when a directory file descriptor is open with either `kern.chroot_allow_open_directories` being 0, or when the process already is inside a chroot. This is exposed in alpm_run_chroot that uses opendir() to open a file descriptor to the current directory before doing the forking and chrooting. Since the file descriptor is not used in the forked process, we close it. Fixes FS#36161. Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
759c48cd34
commit
20127e732c
@ -542,6 +542,7 @@ int _alpm_run_chroot(alpm_handle_t *handle, const char *cmd, char *const argv[])
|
||||
while(dup2(pipefd[1], 2) == -1 && errno == EINTR);
|
||||
close(pipefd[0]);
|
||||
close(pipefd[1]);
|
||||
close(cwdfd);
|
||||
|
||||
/* use fprintf instead of _alpm_log to send output through the parent */
|
||||
if(chroot(handle->root) != 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user