Set close on exec
authorHwankyu Jhun <h.jhun@samsung.com>
Mon, 11 Sep 2023 02:17:36 +0000 (11:17 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Tue, 12 Sep 2023 06:31:47 +0000 (15:31 +0900)
To avoid inheriting fd to the child process, this patch sets close on
exec flag to fd.

Change-Id: I3ab2255e8cd80ad50ffbf355e51f0acec1030d68
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/server-socket-internal.cc
src/server-socket-internal.hh

index 4f60c2053d0f5fa76d595d9f9961d4066cf6642b..713e908b87718c4c93f9faf9a183ffdff29aee56 100644 (file)
@@ -29,6 +29,7 @@ namespace rpc_port {
 namespace internal {
 
 ServerSocket::ServerSocket(int fd) : fd_(fd) {
+  SetCloseOnExec();
 }
 
 ServerSocket::~ServerSocket() {
@@ -67,6 +68,12 @@ int ServerSocket::Listen(int backlog) {
   return 0;
 }
 
+void ServerSocket::SetCloseOnExec() {
+  int flags = fcntl(fd_, F_GETFL, 0);
+  fcntl(fd_, F_SETFL, flags | O_CLOEXEC);
+  _I("Close on exec");
+}
+
 void ServerSocket::Close() {
   if (fd_ > -1) {
     close(fd_);
index 47ca9700e26c7b800c366296e57b8125c0fe25ab..43e392aeb7ebf3a8335021ecc4547e84a7d9f440 100644 (file)
@@ -32,6 +32,7 @@ class ServerSocket {
   int GetFd() const;
   int Listen(int backlog);
   void Close();
+  void SetCloseOnExec();
 
  private:
   int fd_;