SM: Use TzPlatformConfig for global app dir 62/87562/1
authorZofia Abramowska <z.abramowska@samsung.com>
Thu, 8 Sep 2016 11:10:32 +0000 (13:10 +0200)
committerZofia Abramowska <z.abramowska@samsung.com>
Thu, 8 Sep 2016 12:10:12 +0000 (14:10 +0200)
Change-Id: I9252080880c12c11ed38bde46dfe7b1dd32268c7

packaging/security-tests.spec
src/security-manager-tests/CMakeLists.txt
src/security-manager-tests/common/app_install_helper.h
src/security-manager-tests/common/sm_commons.cpp
src/security-manager-tests/common/sm_commons.h
src/security-manager-tests/common/sm_request.cpp
src/security-manager-tests/common/sm_request.h
src/security-manager-tests/common/tzplatform.cpp
src/security-manager-tests/common/tzplatform.h
src/security-manager-tests/test_cases_trusted_sharing.cpp

index 0483592..2e724a2 100644 (file)
@@ -53,7 +53,8 @@ cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} \
         -DCYNARA_DB_DIR=%{_localstatedir}/cynara/db \
         -DAPP_USER="security_test_user" \
         -DCKM_TEST_DIR=%{ckm_test_dir} \
-        -DCKM_RW_DATA_DIR=%{ckm_rw_data_dir}
+        -DCKM_RW_DATA_DIR=%{ckm_rw_data_dir} \
+        -DGLOBAL_APP_DIR=%{TZ_SYS_RW_APP}
 make %{?jobs:-j%jobs}
 
 %install
@@ -83,7 +84,7 @@ echo "security-tests postinst done ..."
 /usr/bin/security-manager-tests
 /etc/smack/test_smack_rules
 /etc/smack/test_smack_rules_lnk
-/opt/usr/globalapps/*
+%{TZ_SYS_RW_APP}*
 /usr/bin/cynara-test
 /usr/bin/ckm-tests
 /usr/bin/ckm-integration-tests
index b6eb326..273f444 100644 (file)
@@ -91,5 +91,5 @@ INSTALL(TARGETS ${TARGET_SEC_MGR_TESTS} DESTINATION /usr/bin)
 
 INSTALL(DIRECTORY
     ${PROJECT_SOURCE_DIR}/src/security-manager-tests/app_files/
-    DESTINATION /opt/usr/globalapps/
+    DESTINATION ${GLOBAL_APP_DIR}
 )
index 2bd6889..5162ba8 100644 (file)
@@ -23,6 +23,7 @@
 #include <sys/smack.h>
 
 #include <dpl/test/test_runner.h>
+#include <tzplatform.h>
 
 struct AppInstallHelper {
     AppInstallHelper(const std::string &name)
@@ -34,7 +35,7 @@ struct AppInstallHelper {
     {}
 
     std::string getInstallDir() const {
-        return "/opt/usr/globalapps/" + getPkgId();
+        return  TzPlatformConfig::globalAppDir() + "/" + getPkgId();
     }
 
     std::string getTrustedDir(int i = 0) const {
index 71aeb89..53013d4 100644 (file)
@@ -78,7 +78,7 @@ std::string generatePkgLabel(const std::string &pkgId)
 static std::string genPath(int app_num, const char *postfix) {
     char buf[16];
     sprintf(buf, "%02d", app_num);
-    return std::string("/opt/usr/globalapps/sm_test_") + std::string(buf) + std::string("_pkg_id_full/") + std::string(postfix);
+    return TzPlatformConfig::globalAppDir() + "/sm_test_" + std::string(buf) + "_pkg_id_full/" + std::string(postfix);
 }
 
 std::string genRWPath(int app_num) {
@@ -210,7 +210,7 @@ int nftw_remove_labels(const char *fpath, const struct stat* /*sb*/,
     return 0;
 }
 
-static const char *const SM_DENIED_PATH = "/opt/usr/globalapps/non_app_dir";
+static const std::string SM_DENIED_PATH = TzPlatformConfig::globalAppDir() + "/non_app_dir";
 
 void check_app_permissions(const char *const app_id, const char *const pkg_id,
                            const char *const user, const privileges_t &allowed_privs,
@@ -334,7 +334,7 @@ void check_app_path_after_install(int app_num, const char *pkgId, bool others_en
     result = nftw(SM_PUBLIC_RO_PATH.c_str(), &nftw_check_sm_labels, FTW_MAX_FDS, FTW_PHYS);
     RUNNER_ASSERT_MSG(result == 0, "Unable to check Smack labels for " << SM_PUBLIC_RO_PATH);
 
-    result = nftw(SM_DENIED_PATH, &nftw_check_labels_non_app_dir, FTW_MAX_FDS, FTW_PHYS);
+    result = nftw(SM_DENIED_PATH.c_str(), &nftw_check_labels_non_app_dir, FTW_MAX_FDS, FTW_PHYS);
     RUNNER_ASSERT_MSG(result == 0, "Unable to check Smack labels for " << SM_DENIED_PATH);
 
     // owner RW, others RO
@@ -436,7 +436,7 @@ static void prepare_app_path(int app_num, bool others_enabled = false)
         RUNNER_ASSERT_MSG(result == 0, "Unable to clean Smack labels in " << SM_OWNER_RW_OTHERS_RO_PATH);
     }
 
-    result = nftw(SM_DENIED_PATH, &nftw_set_labels_non_app_dir, FTW_MAX_FDS, FTW_PHYS);
+    result = nftw(SM_DENIED_PATH.c_str(), &nftw_set_labels_non_app_dir, FTW_MAX_FDS, FTW_PHYS);
     RUNNER_ASSERT_MSG(result == 0, "Unable to set Smack labels in " << SM_DENIED_PATH);
 }
 
index e9a6892..efd0b40 100644 (file)
@@ -29,6 +29,7 @@
 #include <memory.h>
 #include <sm_db.h>
 #include <temp_test_user.h>
+#include <tzplatform.h>
 
 DEFINE_SMARTPTR(cap_free, _cap_struct, CapsSetsUniquePtr);
 
@@ -43,7 +44,8 @@ extern const privileges_t SM_ALLOWED_PRIVILEGES;
 extern const privileges_t SM_DENIED_PRIVILEGES;
 extern const privileges_t SM_NO_PRIVILEGES;
 extern const std::vector<std::string> SM_ALLOWED_GROUPS;
-static const char *const SM_RW_PATH = "/opt/usr/globalapps/sm_test_02_pkg_id_full/app_dir";
+const std::string SM_RW_PATH =
+        TzPlatformConfig::globalAppDir() + "/sm_test_02_pkg_id_full/app_dir";
 
 const std::string uidToStr(const uid_t uid);
 
index 912bb53..c20dbb6 100644 (file)
 namespace SecurityManagerTest {
 
 void prepare_request(InstallRequest &request,
-                     const char *const app_id,
-                     const char *const pkg_id,
+                     const std::string &app_id,
+                     const std::string &pkg_id,
                      app_install_path_type pathType,
-                     const char *const path,
+                     const std::string &path,
                      uid_t uid)
 {
     request.setAppId(app_id);
index d2acdba..a6af195 100644 (file)
 namespace SecurityManagerTest {
 class InstallRequest;
 void prepare_request(InstallRequest &request,
-                     const char *const app_id,
-                     const char *const pkg_id,
+                     const std::string &app_id,
+                     const std::string &pkg_id,
                      app_install_path_type pathType,
-                     const char *const path,
+                     const std::string &path,
                      uid_t uid);
 class InstallRequest
 {
index 8484cb9..315bb48 100644 (file)
@@ -61,5 +61,18 @@ const std::string appDirPath(const TemporaryTestUser &user, const std::string &a
     return std::string(appDir) + "/" + pkgId + "/" + appId;
 }
 
+const std::string globalAppDir()
+{
+    struct tzplatform_context *tzCtxPtr = nullptr;
+
+    RUNNER_ASSERT_MSG(0 == tzplatform_context_create(&tzCtxPtr), "Couldn't create tzplatform context");
+    TzPlatformContextPtr tzCtxPtrSmart(tzCtxPtr);
+
+    const char *appDir = tzplatform_context_getenv(tzCtxPtr, TZ_SYS_RW_APP);
+    RUNNER_ASSERT_MSG(nullptr != appDir,
+                      "tzplatform_context_getenv failed for getting sys rw app");
+    return appDir;
+}
+
 }
 
index cbbb216..8217150 100644 (file)
@@ -28,6 +28,7 @@ uid_t getGlobalGroupId(void);
 
 const std::string appDirPath(const TemporaryTestUser &user, const std::string &appId,
                              const std::string &pkgId);
+const std::string globalAppDir();
 
 }
 
index f2ed2f6..a728c3e 100644 (file)
 #include <sm_db.h>
 #include <sm_request.h>
 #include <tests_common.h>
+#include <tzplatform.h>
 
 using namespace SecurityManagerTest;
 
-static const char *const SM_TRUSTED_PATH = "/opt/usr/globalapps/sm_test_02_pkg_id_full/app_dir_trusted";
+static const std::string SM_TRUSTED_PATH =
+        TzPlatformConfig::globalAppDir() + "/sm_test_02_pkg_id_full/app_dir_trusted";
 
 static void check_exact_access(const std::string& subject, const std::string& object, const std::string& access)
 {