From acbe227d50178657d98a609221b1caa5b128d7bb Mon Sep 17 00:00:00 2001 From: Youfu Zhang Date: Fri, 22 Jan 2021 17:41:22 +0800 Subject: dpkg: fix passing readonly /dev/null fd as stdout/stderr The read-only /dev/null was duplicated to stdout and stderr, causing writes to those descriptors to fail: [pid 260] openat(AT_FDCWD, "/dev/null", O_RDONLY) = 7 [pid 260] dup2(7, 0) = 0 [pid 260] close(5) = 0 [pid 260] dup2(6, 1) = 1 [pid 260] dup2(7, 2) = 2 [pid 260] write(2, "Chrooting into ", 15) = -1 EBADF (Bad file descriptor) [pid 260] chroot("/chroot/") = 0 --- apt-pkg/deb/debsystem.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc index eac43c3b7..a0200305d 100644 --- a/apt-pkg/deb/debsystem.cc +++ b/apt-pkg/deb/debsystem.cc @@ -420,7 +420,7 @@ pid_t debSystem::ExecDpkg(std::vector const &sArgs, int * const inp pid_t const dpkg = ExecFork(); if (dpkg == 0) { - int const nullfd = open("/dev/null", O_RDONLY); + int const nullfd = open("/dev/null", O_RDWR); if (inputFd == nullptr) dup2(nullfd, STDIN_FILENO); else -- cgit v1.2.3-18-g5258