From d3504b4f9b6e2688a31e8776ff22e1b2e6828e38 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Wed, 13 Nov 2019 16:04:31 +0300 Subject: [PATCH] Terminal+HackStudio: Fix leaking PTM fd to child processes The pseudoterminal *master* fd is not supposed to be inherited, so make sure to open it with O_CLOEXEC. --- Applications/Terminal/main.cpp | 2 +- DevTools/HackStudio/TerminalWrapper.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Applications/Terminal/main.cpp b/Applications/Terminal/main.cpp index 7839372c20..f21f0866bd 100644 --- a/Applications/Terminal/main.cpp +++ b/Applications/Terminal/main.cpp @@ -148,7 +148,7 @@ int main(int argc, char** argv) if (chdir(get_current_user_home_path().characters()) < 0) perror("chdir"); - int ptm_fd = open("/dev/ptmx", O_RDWR); + int ptm_fd = open("/dev/ptmx", O_RDWR | O_CLOEXEC); if (ptm_fd < 0) { perror("open(ptmx)"); return 1; diff --git a/DevTools/HackStudio/TerminalWrapper.cpp b/DevTools/HackStudio/TerminalWrapper.cpp index 90ae3b3476..4319666994 100644 --- a/DevTools/HackStudio/TerminalWrapper.cpp +++ b/DevTools/HackStudio/TerminalWrapper.cpp @@ -24,7 +24,7 @@ void TerminalWrapper::run_command(const String& command) return; } - int ptm_fd = open("/dev/ptmx", O_RDWR); + int ptm_fd = open("/dev/ptmx", O_RDWR | O_CLOEXEC); if (ptm_fd < 0) { perror("open(ptmx)"); ASSERT_NOT_REACHED();