From 1cf286a5ac7a9b2e05df89c3f514b49fd2015763 Mon Sep 17 00:00:00 2001 From: Zofia Abramowska Date: Thu, 8 Sep 2016 13:10:32 +0200 Subject: [PATCH] SM: Use TzPlatformConfig for global app dir Change-Id: I9252080880c12c11ed38bde46dfe7b1dd32268c7 --- packaging/security-tests.spec | 5 +++-- src/security-manager-tests/CMakeLists.txt | 2 +- src/security-manager-tests/common/app_install_helper.h | 3 ++- src/security-manager-tests/common/sm_commons.cpp | 8 ++++---- src/security-manager-tests/common/sm_commons.h | 4 +++- src/security-manager-tests/common/sm_request.cpp | 6 +++--- src/security-manager-tests/common/sm_request.h | 6 +++--- src/security-manager-tests/common/tzplatform.cpp | 13 +++++++++++++ src/security-manager-tests/common/tzplatform.h | 1 + src/security-manager-tests/test_cases_trusted_sharing.cpp | 4 +++- 10 files changed, 36 insertions(+), 16 deletions(-) diff --git a/packaging/security-tests.spec b/packaging/security-tests.spec index 0483592..2e724a2 100644 --- a/packaging/security-tests.spec +++ b/packaging/security-tests.spec @@ -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 diff --git a/src/security-manager-tests/CMakeLists.txt b/src/security-manager-tests/CMakeLists.txt index b6eb326..273f444 100644 --- a/src/security-manager-tests/CMakeLists.txt +++ b/src/security-manager-tests/CMakeLists.txt @@ -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} ) diff --git a/src/security-manager-tests/common/app_install_helper.h b/src/security-manager-tests/common/app_install_helper.h index 2bd6889..5162ba8 100644 --- a/src/security-manager-tests/common/app_install_helper.h +++ b/src/security-manager-tests/common/app_install_helper.h @@ -23,6 +23,7 @@ #include #include +#include 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 { diff --git a/src/security-manager-tests/common/sm_commons.cpp b/src/security-manager-tests/common/sm_commons.cpp index 71aeb89..53013d4 100644 --- a/src/security-manager-tests/common/sm_commons.cpp +++ b/src/security-manager-tests/common/sm_commons.cpp @@ -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); } diff --git a/src/security-manager-tests/common/sm_commons.h b/src/security-manager-tests/common/sm_commons.h index e9a6892..efd0b40 100644 --- a/src/security-manager-tests/common/sm_commons.h +++ b/src/security-manager-tests/common/sm_commons.h @@ -29,6 +29,7 @@ #include #include #include +#include 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 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); diff --git a/src/security-manager-tests/common/sm_request.cpp b/src/security-manager-tests/common/sm_request.cpp index 912bb53..c20dbb6 100644 --- a/src/security-manager-tests/common/sm_request.cpp +++ b/src/security-manager-tests/common/sm_request.cpp @@ -21,10 +21,10 @@ 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); diff --git a/src/security-manager-tests/common/sm_request.h b/src/security-manager-tests/common/sm_request.h index d2acdba..a6af195 100644 --- a/src/security-manager-tests/common/sm_request.h +++ b/src/security-manager-tests/common/sm_request.h @@ -28,10 +28,10 @@ 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 { diff --git a/src/security-manager-tests/common/tzplatform.cpp b/src/security-manager-tests/common/tzplatform.cpp index 8484cb9..315bb48 100644 --- a/src/security-manager-tests/common/tzplatform.cpp +++ b/src/security-manager-tests/common/tzplatform.cpp @@ -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; +} + } diff --git a/src/security-manager-tests/common/tzplatform.h b/src/security-manager-tests/common/tzplatform.h index cbbb216..8217150 100644 --- a/src/security-manager-tests/common/tzplatform.h +++ b/src/security-manager-tests/common/tzplatform.h @@ -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(); } diff --git a/src/security-manager-tests/test_cases_trusted_sharing.cpp b/src/security-manager-tests/test_cases_trusted_sharing.cpp index f2ed2f6..a728c3e 100644 --- a/src/security-manager-tests/test_cases_trusted_sharing.cpp +++ b/src/security-manager-tests/test_cases_trusted_sharing.cpp @@ -29,10 +29,12 @@ #include #include #include +#include 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) { -- 2.7.4