Fix Util::CloseAllFds() method 91/317491/1
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 11 Sep 2024 04:05:58 +0000 (13:05 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 11 Sep 2024 04:05:58 +0000 (13:05 +0900)
To avoid deadlock issue by calling getenv(), this patch uses the global variable.

Change-Id: Ia0dca71f9eb511629562dad1e96df72eaf8e3f86
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/lib/launchpad-glib/util.cc

index 90dfd40b245ca731917d8ed628930cf90eb1af20..2f387f0b82f0eba4a1c66291509a980a767eff99 100644 (file)
@@ -66,6 +66,8 @@ constexpr const char kApp2sdOndemandSetupInitMethod[] = "OndemandSetupInit";
 const int kApp2sdRetryMax = 5;
 const int kApp2sdWaitUsec = 1000000 / 2;  // 0.5 sec
 
+int aul_listen_fd = -1;
+
 void SetLanguageEnvironments() {
   const char* lang = getenv("LANG");
   if (lang == nullptr) {
@@ -538,10 +540,7 @@ std::string Util::GetLibDirectory(const std::string& app_path) {
 }
 
 void Util::CloseAllFds(const std::vector<int>& except_fds) {
-  int aul_fd = -1;
-  const char* aul_listen_fd = getenv("AUL_LISTEN_FD");
-  if (aul_listen_fd != nullptr)
-    aul_fd = atoi(aul_listen_fd);
+  int aul_fd = aul_listen_fd;
 
   std::vector<int> fds;
   try {
@@ -591,8 +590,8 @@ int Util::PrepareAppSocket() {
     socket.SetReceiveBufferSize(Socket::kSocketMaxBufferSize);
     socket.SetSendBufferSize(Socket::kSocketMaxBufferSize);
     socket.SetCloseOnExec(false);
-    int fd = socket.RemoveFd();
-    setenv("AUL_LISTEN_FD", std::to_string(fd).c_str(), 1);
+    aul_listen_fd = socket.RemoveFd();
+    setenv("AUL_LISTEN_FD", std::to_string(aul_listen_fd).c_str(), 1);
   } catch (const Exception& e) {
     _E("Exception occurs. error(%s)", e.what());
     return e.GetErrorCode();