Add step that forces private connections in libsyscommon 16/294516/5
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 16 Jun 2023 08:18:29 +0000 (10:18 +0200)
committerHwanKyu Jhun <h.jhun@samsung.com>
Fri, 23 Jun 2023 02:16:26 +0000 (02:16 +0000)
This is used to ensure that applications launched by launchpad get their
own connection with the appropriate label, rather than using the
connection that was established before the label change.

Change-Id: I1536904207b2b73a5478c6bde973c0e9296a8f87

CMakeLists.txt
packaging/launchpad.spec
src/launchpad-process-pool/CMakeLists.txt
src/lib/launchpad/step_prepare_execution.cc
src/lib/launchpad/step_prepare_execution.hh
tests/launchpad-process-pool-unittest/CMakeLists.txt

index 67bdb59..a8ba71f 100644 (file)
@@ -60,7 +60,7 @@ PKG_CHECK_MODULES(DLOG_REDIRECT_STDOUT_DEPS REQUIRED dlog-redirect-stdout)
 PKG_CHECK_MODULES(ECORE_CORE_DEPS REQUIRED ecore-core)
 PKG_CHECK_MODULES(ECORE_DEPS REQUIRED ecore)
 PKG_CHECK_MODULES(ELEMENTARY_DEPS REQUIRED elementary)
-PKG_CHECK_MODULES(GIO_DEPS REQUIRED gio-2.0)
+PKG_CHECK_MODULES(GIO_DEPS REQUIRED gio-2.0 gio-unix-2.0)
 PKG_CHECK_MODULES(GMOCK_DEPS REQUIRED gmock)
 PKG_CHECK_MODULES(INIPARSER_DEPS REQUIRED iniparser)
 PKG_CHECK_MODULES(LIBCAP_DEPS REQUIRED libcap)
@@ -75,6 +75,7 @@ PKG_CHECK_MODULES(TANCHOR_DEPS REQUIRED tanchor)
 PKG_CHECK_MODULES(TIZEN_SHARED_QUEUE_DEPS REQUIRED tizen-shared-queue)
 PKG_CHECK_MODULES(TTRACE_DEPS REQUIRED ttrace)
 PKG_CHECK_MODULES(VCONF_DEPS REQUIRED vconf)
+PKG_CHECK_MODULES(LIBSYSCOMMON_DEPS REQUIRED libsyscommon)
 
 ENABLE_TESTING()
 ADD_TEST(NAME ${TARGET_LAUNCHPAD_PROCESS_POOL_UNITTEST}
index 0d2c5ec..13ff036 100644 (file)
@@ -23,11 +23,13 @@ BuildRequires:  pkgconfig(dlog-redirect-stdout)
 BuildRequires:  pkgconfig(ecore)
 BuildRequires:  pkgconfig(elementary)
 BuildRequires:  pkgconfig(gio-2.0)
+BuildRequires:  pkgconfig(gio-unix-2.0)
 BuildRequires:  pkgconfig(gmock)
 BuildRequires:  pkgconfig(iniparser)
 BuildRequires:  pkgconfig(libcap)
 BuildRequires:  pkgconfig(libsmack)
 BuildRequires:  pkgconfig(libsystemd)
+BuildRequires:  pkgconfig(libsyscommon)
 BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(libxml-2.0)
 BuildRequires:  pkgconfig(parcel)
index 062173c..4832ebb 100644 (file)
@@ -37,6 +37,7 @@ APPLY_PKG_CONFIG(${TARGET_LAUNCHPAD_PROCESS_POOL} PUBLIC
   LIBCAP_DEPS
   LIBSMACK_DEPS
   LIBSYSTEMD_DEPS
+  LIBSYSCOMMON_DEPS
   LIBTZPLATFORM_CONFIG_DEPS
   SECURITY_MANAGER_DEPS
   TANCHOR_DEPS
index 1c19ce0..951e5e2 100644 (file)
@@ -20,6 +20,7 @@
 #include <bundle_cpp.h>
 #include <bundle_internal.h>
 #include <buxton2.h>
+#include <libsyscommon/libgdbus.h>
 #include <security-manager.h>
 #include <sys/prctl.h>
 #include <sys/types.h>
@@ -61,6 +62,8 @@ StepPrepareExecution::StepPrepareExecution() {
         std::placeholders::_1),
     std::bind(&StepPrepareExecution::PrepareIdFile, this,
         std::placeholders::_1),
+    std::bind(&StepPrepareExecution::LibsyscommonSwitchToPrivateConn, this,
+        std::placeholders::_1),
     std::bind(&StepPrepareExecution::SendStartupSignal, this,
         std::placeholders::_1),
   };
@@ -189,6 +192,11 @@ int StepPrepareExecution::PrepareIdFile(AppInfo* app_info) {
   return 0;
 }
 
+int StepPrepareExecution::LibsyscommonSwitchToPrivateConn(AppInfo* app_info) {
+  _I("Switching to private connection.");
+  return gdbus_switch_to_private_connection();
+}
+
 int StepPrepareExecution::SendStartupSignal(AppInfo* app_info) {
   if (Util::SendCmdToAmd(AmdCmd::AppStartupSignal) != 0)
     _W("Failed to send startup signal");
index f95514b..eea1c7e 100644 (file)
@@ -43,6 +43,7 @@ class StepPrepareExecution {
   int WaitTepMount(AppInfo* app_info);
   int PrepareAppSocket(AppInfo* app_info);
   int PrepareIdFile(AppInfo* app_info);
+  int LibsyscommonSwitchToPrivateConn(AppInfo* app_info);
   int SendStartupSignal(AppInfo* app_info);
 
  private:
index 9dd8db5..5b92bde 100644 (file)
@@ -33,6 +33,7 @@ APPLY_PKG_CONFIG(${TARGET_LAUNCHPAD_PROCESS_POOL_UNITTEST} PUBLIC
   INIPARSER_DEPS
   LIBCAP_DEPS
   LIBSMACK_DEPS
+  LIBSYSCOMMON_DEPS
   LIBSYSTEMD_DEPS
   LIBTZPLATFORM_CONFIG_DEPS
   SECURITY_MANAGER_DEPS