Unify path generation 73/226973/4
authorZofia Grzelewska <z.abramowska@samsung.com>
Thu, 5 Mar 2020 17:47:56 +0000 (18:47 +0100)
committerLukasz Pawelczyk <l.pawelczyk@samsung.com>
Thu, 19 Mar 2020 14:28:30 +0000 (14:28 +0000)
Change-Id: I9baaf7bf66faa9176919d46b3ddd0b2a54dbcea8

15 files changed:
CMakeLists.txt
packaging/security-manager.spec
policy/CMakeLists.txt
policy/security-manager-policy-reload.in
src/cmd/security-manager-cmd.cpp
src/common/CMakeLists.txt
src/common/db-config.cpp [deleted file]
src/common/include/config.h
src/common/include/db-config.h
src/common/include/privilege_db.h
src/common/permissible-set.cpp
src/common/smack-rules.cpp
src/server/rules-loader/security-manager-rules-loader.cpp
test/CMakeLists.txt
test/privilege_db_fixture.h

index d6c84163fe7da5c9d88bb62e8a4bddab847c8b92..79733d4ed03a827288374575440789f298f53aa7 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2011 - 2019 Samsung Electronics Co., Ltd All Rights Reserved
+# Copyright (c) 2011-2020 Samsung Electronics Co., Ltd. All rights reserved
 #
 #    Licensed under the Apache License, Version 2.0 (the "License");
 #    you may not use this file except in compliance with the License.
@@ -25,27 +25,50 @@ PROJECT("security-manager")
 ############################# cmake packages ##################################
 
 INCLUDE(FindPkgConfig)
+INCLUDE(GNUInstallDirs)
 
 ######################### let's setup directories #############################
 
-SET(LOCAL_STATE_DIR
-    "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LOCALSTATEDIR}"
+SET(LOCAL_STATE_INSTALL_PREFIX
+    "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}"
     CACHE PATH
-    "Modifiable single-machine data directory")
+    "Modifiable single-machine data directory (var)")
 
-SET(DATA_ROOT_DIR
+SET(DB_INSTALL_DIR
+    "${LOCAL_STATE_INSTALL_PREFIX}/${PROJECT_NAME}"
+    CACHE PATH
+    "Modifiable database directory")
+
+SET(LOCAL_STATE_INSTALL_DIR
+    "${LOCAL_STATE_INSTALL_PREFIX}/${PROJECT_NAME}"
+    CACHE PATH
+    "Modifiable data directory")
+
+SET(SHARE_INSTALL_PREFIX
     "${CMAKE_INSTALL_FULL_DATAROOTDIR}"
     CACHE PATH
-    "Read-only data root directory")
+    "Read-only architecture-independent data root (share)")
+
+SET(DATA_INSTALL_DIR
+    "${SHARE_INSTALL_PREFIX}/${PROJECT_NAME}"
+    CACHE PATH
+    "Read-only data directory")
+
+SET(POLICY_INSTALL_DIR
+    "${DATA_INSTALL_DIR}/policy"
+    CACHE PATH
+    "Read-only policy directory")
 
-SET(POLICY_DIR
-    "${DATA_ROOT_DIR}/security-manager/policy"
+SET(DB_TEST_INSTALL_DIR
+    "${DATA_INSTALL_DIR}/db-test"
     CACHE PATH
-    "Read-only data root directory")
+    "Read-only test database directory")
 
-ADD_DEFINITIONS("-DLOCAL_STATE_DIR=\"${LOCAL_STATE_DIR}\"")
-ADD_DEFINITIONS("-DDATA_ROOT_DIR=\"${DATA_ROOT_DIR}\"")
-ADD_DEFINITIONS("-DPOLICY_DIR=\"${POLICY_DIR}\"")
+ADD_DEFINITIONS("-DDB_INSTALL_DIR=\"${DB_INSTALL_DIR}\"")
+ADD_DEFINITIONS("-DLOCAL_STATE_INSTALL_DIR=\"${LOCAL_STATE_INSTALL_DIR}\"")
+ADD_DEFINITIONS("-DDATA_INSTALL_DIR=\"${DATA_INSTALL_DIR}\"")
+ADD_DEFINITIONS("-DPOLICY_INSTALL_DIR=\"${POLICY_INSTALL_DIR}\"")
+ADD_DEFINITIONS("-DDB_TEST_INSTALL_DIR=\"${DB_TEST_INSTALL_DIR}\"")
 
 ############################# compiler flags ##################################
 
index b815c1d5f6b0e8a8df10ba66593a730997fe5bf0..127509f8940f8d816037b24fd888b6069ac270c8 100644 (file)
@@ -40,8 +40,6 @@ BuildRequires: pkgconfig(mount)
 BuildRequires: boost-devel
 %{?systemd_requires}
 
-%global db_test_dir %{?TZ_SYS_RO_SHARE:%TZ_SYS_RO_SHARE/sm-db-test}%{!?TZ_SYS_RO_SHARE:%_datadir/sm-db-test}
-
 %description
 Tizen security manager and utilities
 
@@ -108,16 +106,18 @@ Package with plugins for cynara.
 
 export LDFLAGS+="-Wl,--rpath=%{_libdir}"
 
-%cmake . -DVERSION=%{version} \
-        -DBIN_INSTALL_DIR=%{_bindir} \
-        -DDB_INSTALL_DIR=%{TZ_SYS_DB} \
-        -DLOCAL_STATE_DIR=%{TZ_SYS_VAR} \
-        -DSYSTEMD_INSTALL_DIR=%{_unitdir} \
-        -DDATA_ROOT_DIR=%{_datadir} \
-        -DDB_LOGS=OFF \
-        -DDB_TEST_DIR=%{db_test_dir} \
-        -DCMAKE_BUILD_TYPE=%{?build_type:%build_type}%{!?build_type:RELEASE} \
-        -DCMAKE_VERBOSE_MAKEFILE=ON
+%global db_test_dir %{_datadir}/sm-db-test
+
+%cmake . \
+       -DVERSION=%{version} \
+       -DBIN_INSTALL_DIR=%{_bindir} \
+       -DSYSTEMD_INSTALL_DIR=%{_unitdir} \
+       -DLOCAL_STATE_INSTALL_PREFIX=%{TZ_SYS_VAR} \
+       -DDB_INSTALL_DIR=%{TZ_SYS_DB} \
+       -DDB_TEST_INSTALL_DIR=%{db_test_dir} \
+       -DDB_LOGS=OFF \
+       -DCMAKE_BUILD_TYPE=%{?build_type:%build_type}%{!?build_type:RELEASE} \
+       -DCMAKE_VERBOSE_MAKEFILE=ON
 make %{?jobs:-j%jobs}
 
 %install
@@ -137,9 +137,9 @@ mkdir -p %{buildroot}/%{TZ_SYS_DB}
 touch %{buildroot}/%{TZ_SYS_DB}/.security-manager.db
 touch %{buildroot}/%{TZ_SYS_DB}/.security-manager.db-journal
 
-install -m 0755 -d %{buildroot}%{TZ_SYS_VAR}/security-manager
-install -m 0444 /dev/null %{buildroot}%{TZ_SYS_VAR}/security-manager/apps-labels
-install -m 0444 /dev/null %{buildroot}%{TZ_SYS_VAR}/security-manager/policy-version
+install -m 0755 -d %{buildroot}%{TZ_SYS_VAR}/%{name}
+install -m 0444 /dev/null %{buildroot}%{TZ_SYS_VAR}/%{name}/apps-labels
+install -m 0444 /dev/null %{buildroot}%{TZ_SYS_VAR}/%{name}/policy-version
 
 mkdir -p %{buildroot}/%{db_test_dir}
 sqlite3 %{buildroot}/%{db_test_dir}/.security-manager-test.db  <  db/db.sql
@@ -176,7 +176,7 @@ fi
 chsmack -a System %{TZ_SYS_DB}/.security-manager.db
 chsmack -a System %{TZ_SYS_DB}/.security-manager.db-journal
 
-chsmack -r -a _ %{TZ_SYS_VAR}/security-manager/
+chsmack -r -a _ %{TZ_SYS_VAR}/%{name}/
 
 %preun
 if [ $1 = 0 ]; then
@@ -227,14 +227,14 @@ fi
 
 %pre
 ### Workaround for invalid policy versioning mechanism
-if [ -e %{TZ_SYS_VAR}/security-manager/policy-version ] && [ x`cat %{TZ_SYS_VAR}/security-manager/policy-version` = x"1" ]
+if [ -e %{TZ_SYS_VAR}/%{name}/policy-version ] && [ x`cat %{TZ_SYS_VAR}/%{name}/policy-version` = x"1" ]
 then
     ### Restart versioning, let the update scripts do their work
-    echo 0 >%{TZ_SYS_VAR}/security-manager/policy-version
+    echo 0 >%{TZ_SYS_VAR}/%{name}/policy-version
 fi
 
 %post policy
-%{_datadir}/security-manager/policy/update.sh
+%{_datadir}/%{name}/policy/update.sh
 %{_bindir}/security-manager-policy-reload
 
 %post -n security-manager-tests
@@ -261,8 +261,8 @@ chsmack -a System %{db_test_dir}/.security-manager-test-rules*.txt
 %attr(755,root,root) %{_bindir}/security-manager-rules-loader
 %attr(755,root,root) %{_sysconfdir}/gumd/useradd.d/50_security-manager-add.post
 %attr(755,root,root) %{_sysconfdir}/gumd/userdel.d/50_security-manager-remove.pre
-%config(noreplace) %attr(444,root,root) %{TZ_SYS_VAR}/security-manager/apps-labels
-%dir %attr(711,root,root) %{TZ_SYS_VAR}/security-manager/
+%config(noreplace) %attr(444,root,root) %{TZ_SYS_VAR}/%{name}/apps-labels
+%dir %attr(711,root,root) %{TZ_SYS_VAR}/%{name}/
 
 %{_libdir}/libsecurity-manager-commons.so.*
 %attr(-,root,root) %{_unitdir}/security-manager.*
@@ -299,8 +299,8 @@ chsmack -a System %{db_test_dir}/.security-manager-test-rules*.txt
 %files -n security-manager-policy
 %manifest %{_datadir}/security-manager-policy.manifest
 %license LICENSE
-%config(noreplace) %{TZ_SYS_VAR}/security-manager/policy-version
-%{_datadir}/security-manager/policy
+%config(noreplace) %{TZ_SYS_VAR}/%{name}/policy-version
+%{_datadir}/%{name}/policy
 %attr(755,root,root) %{_bindir}/security-manager-policy-reload
 %attr(755,root,root) %{_sysconfdir}/opt/upgrade/241.security-manager.policy-update.sh
 
index 49f80af9dc7ac032864244effb30e5424f62b895..2848fe25c597ed956d9787115d524afa382f7a05 100644 (file)
@@ -4,15 +4,15 @@ FILE(GLOB USERTYPE_POLICY_FILES usertype-*.profile)
 
 CONFIGURE_FILE(security-manager-policy-reload.in security-manager-policy-reload @ONLY)
 
-INSTALL(FILES ${USERTYPE_POLICY_FILES} DESTINATION ${POLICY_DIR})
-INSTALL(FILES "app-rules-template.smack" DESTINATION ${POLICY_DIR})
-INSTALL(FILES "pkg-rules-template.smack" DESTINATION ${POLICY_DIR})
-INSTALL(FILES "author-rules-template.smack" DESTINATION ${POLICY_DIR})
-INSTALL(FILES "privilege-group.list" DESTINATION ${POLICY_DIR})
-INSTALL(FILES "privilege-mount.list" DESTINATION ${POLICY_DIR})
-INSTALL(FILES "privilege-managed-by-systemd-for-daemons.list" DESTINATION ${POLICY_DIR})
-INSTALL(PROGRAMS "update.sh" DESTINATION ${POLICY_DIR})
-INSTALL(DIRECTORY "updates" USE_SOURCE_PERMISSIONS DESTINATION ${POLICY_DIR})
+INSTALL(FILES ${USERTYPE_POLICY_FILES} DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(FILES "app-rules-template.smack" DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(FILES "pkg-rules-template.smack" DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(FILES "author-rules-template.smack" DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(FILES "privilege-group.list" DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(FILES "privilege-mount.list" DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(FILES "privilege-managed-by-systemd-for-daemons.list" DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(PROGRAMS "update.sh" DESTINATION ${POLICY_INSTALL_DIR})
+INSTALL(DIRECTORY "updates" USE_SOURCE_PERMISSIONS DESTINATION ${POLICY_INSTALL_DIR})
 INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/security-manager-policy-reload DESTINATION ${BIN_INSTALL_DIR})
 
 # FOTA updater
index b6a175f6a3f559e50922a6b75bc8cf522423fc09..c683ebb059c3894930aadb4933429d827a132e89 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh -e
 
 PATH=/bin:/usr/bin:/sbin:/usr/sbin
-POLICY_PATH=@POLICY_DIR@
+POLICY_PATH=@POLICY_INSTALL_DIR@
 PRIVILEGE_GROUP_MAPPING=$POLICY_PATH/privilege-group.list
 PRIVILEGE_SYSTEMD_LIST=$POLICY_PATH/privilege-managed-by-systemd-for-daemons.list
 
index c200813bdba1d195a913da5bcf8559aa2d4d3c38..8920638ac30e90f9b5bb346c2dce8947bf0e2f01 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2000 - 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2000-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Contact: Rafal Krypa <r.krypa@samsung.com>
  *
@@ -481,8 +481,7 @@ int main(int argc, char *argv[])
             parsePrivilegeOptions(argc, argv, *req, vm);
             return managePrivilegeOperation(*req, policy_update, operation);
         } else if (vm.count("backup")) {
-            if (SECURITY_MANAGER_SUCCESS == FS::overwriteFile(Config::getPrivilegeDbPath(),
-                                                              Config::getPrivilegeDbFallbackPath()))
+            if (SECURITY_MANAGER_SUCCESS == FS::overwriteFile(DB_PATH, DB_FALLBACK_PATH))
                 return EXIT_SUCCESS;
         } else {
             std::cout << "No command argument was given." << std::endl;
index d9b99b95e5d2ecea1def0d7d4bc226f2a382de51..8c2f9865a05f9249d907cd6b15ac3d9884f6352b 100644 (file)
@@ -53,7 +53,6 @@ SET(COMMON_SOURCES
     ${COMMON_PATH}/connection.cpp
     ${COMMON_PATH}/credentials.cpp
     ${COMMON_PATH}/cynara.cpp
-    ${COMMON_PATH}/db-config.cpp
     ${COMMON_PATH}/filesystem.cpp
     ${COMMON_PATH}/file-lock.cpp
     ${COMMON_PATH}/permissible-set.cpp
@@ -112,4 +111,4 @@ TARGET_LINK_LIBRARIES(${TARGET_COMMON}
     )
 
 INSTALL(TARGETS ${TARGET_COMMON} DESTINATION ${LIB_INSTALL_DIR})
-INSTALL(DIRECTORY DESTINATION ${DATA_ROOT_DIR}/${PROJECT_NAME}/dummy)
+INSTALL(DIRECTORY DESTINATION ${DATA_INSTALL_DIR}/dummy)
diff --git a/src/common/db-config.cpp b/src/common/db-config.cpp
deleted file mode 100644 (file)
index 23ac592..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *  Contact: Tomasz Swierczek <t.swierczek@samsung.com>
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License
- */
-/*
- * @file        db-config.cpp
- * @author      Tomasz Swierczek <t.swierczek@samsung.com>
- * @version     1.0
- * @brief       Configuration options for DB - implementation
- */
-
-#include <db-config.h>
-#include <tzplatform-config.h>
-
-namespace SecurityManager {
-
-namespace Config {
-
-std::string getPrivilegeDbPath() {
-    return TizenPlatformConfig::makePath(TZ_SYS_DB, ".security-manager.db");
-}
-
-std::string getPrivilegeDbFallbackPath() {
-    return TizenPlatformConfig::makePath(TZ_SYS_RO_SHARE,
-                                         "security-manager",
-                                         ".security-manager.db");
-}
-
-};
-
-} /* namespace SecurityManager */
index 336d128ccc82cd01b39e27de8b19bc2659af5af6..281b83846ddc0859cd86f7900c898e4265bad0a8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2015 - 2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2015-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Contact: Rafal Krypa <r.krypa@samsung.com>
  *
@@ -42,9 +42,9 @@
 #define APPS_LABELS_FILE           "apps-labels"
 
 /* Policy files */
-#define PRIVILEGE_GROUP_LIST_FILE  POLICY_DIR "/privilege-group.list"
-#define PRIVILEGE_MOUNT_LIST_FILE  POLICY_DIR "/privilege-mount.list"
-#define PRIVILEGE_SYSTEMD_LIST_FILE  POLICY_DIR "/privilege-managed-by-systemd-for-daemons.list"
+#define PRIVILEGE_GROUP_LIST_FILE  POLICY_INSTALL_DIR "/privilege-group.list"
+#define PRIVILEGE_MOUNT_LIST_FILE  POLICY_INSTALL_DIR "/privilege-mount.list"
+#define PRIVILEGE_SYSTEMD_LIST_FILE  POLICY_INSTALL_DIR "/privilege-managed-by-systemd-for-daemons.list"
 
 #define SKEL_DIR                   "/etc/skel"
 
index e4f0268dae6a373e9cb608f33572ba4192e141cd..2a3b16e4767a6d70e5ce402553bea03725477b1e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2019-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Contact: Tomasz Swierczek <t.swierczek@samsung.com>
  *
 
 #include <string>
 
-namespace SecurityManager {
+#define DB_FILE ".security-manager.db"
 
-namespace Config {
+#define DB_PATH DB_INSTALL_DIR "/" DB_FILE
+#define DB_FALLBACK_PATH DATA_INSTALL_DIR "/" DB_FILE
 
-std::string getPrivilegeDbPath();
-std::string getPrivilegeDbFallbackPath();
-
-};
-
-} /* namespace SecurityManager */
 
 // If database initialization fails, restoration to a fallback snapshot is
 // attempted. If the restoration succeeds, a file flag is created to notify
index 1f21fe04b22b50dd138dc7e93596768a7af89888..1d7337c17bac430fdd0ad428d7594c2cc5161895 100644 (file)
@@ -140,7 +140,7 @@ private:
     StatementWrapper getStatement(StmtType queryType);
 
     struct DbStandard {
-        static auto path() { return Config::getPrivilegeDbPath(); }
+        static auto path() { return DB_PATH; }
         static auto okMarkerPath() { return DB_OK_MARKER; }
         static auto loaderCmd() { return "/usr/bin/security-manager-rules-loader"; }
     };
index 8dfc666fcb50e27e7bf7d41ddd5a6f2fc9e6f423..a7735ed276255c0c3a6bdf677b184cfe39149d1e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2016-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Contact: Rafal Krypa <r.krypa@samsung.com>
  *
@@ -84,11 +84,10 @@ std::string getPermissibleFileLocation(uid_t uid, int installationType)
     TizenPlatformConfig tpc(uid);
     if ((installationType == SM_APP_INSTALL_GLOBAL)
             || (installationType == SM_APP_INSTALL_PRELOADED))
-        return tpc.ctxMakePath(TZ_SYS_VAR, SERVICE_NAME,
-            APPS_LABELS_FILE);
+        return std::string(LOCAL_STATE_INSTALL_DIR) + "/" + APPS_LABELS_FILE;
     else
-        return tpc.ctxMakePath(TZ_SYS_VAR, SERVICE_NAME,
-            std::to_string(uid), APPS_LABELS_FILE);
+        return std::string(LOCAL_STATE_INSTALL_DIR) + "/" + std::to_string(uid)
+            + "/" + APPS_LABELS_FILE;
 }
 
 static void markPermissibleFileValid(int fd, const std::string &nameFile, bool valid)
index 7b422058cbc70d25ddadec43f548c50062cb1abb..df3fd44911b199f6bc1e3db0300a7bf5fe94ec39 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2014-2020 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2014-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Contact: Rafal Krypa <r.krypa@samsung.com>
  *
@@ -28,6 +28,7 @@
 #include <sys/smack.h>
 #include <cstring>
 #include <string>
+#include <map>
 #include <memory>
 #include <algorithm>
 
@@ -48,34 +49,22 @@ const std::string SMACK_PATH_RW_LABEL_TEMPLATE     = "~PATH_RW~";
 const std::string SMACK_PATH_RO_LABEL_TEMPLATE     = "~PATH_RO~";
 const std::string SMACK_PATH_TRUSTED_LABEL_TEMPLATE  = "~PATH_TRUSTED~";
 
-std::string getAppRulesTemplateFilePath()
-{
-    static std::string path = TizenPlatformConfig::makePath(
-            TZ_SYS_RO_SHARE,
-            "security-manager",
-            "policy",
-            "app-rules-template.smack");
-    return path;
-}
+enum POLICY_FILE {
+    APP_RULES_TEMPLATE,
+    PKG_RULES_TEMPLATE,
+    AUTHOR_RULES_TEMPLATE
+};
 
-std::string getPkgRulesTemplateFilePath()
-{
-    static std::string path = TizenPlatformConfig::makePath(
-            TZ_SYS_RO_SHARE,
-            "security-manager",
-            "policy",
-            "pkg-rules-template.smack");
-    return path;
-}
+const std::string POLICY_DIR_STR = POLICY_INSTALL_DIR;
 
-std::string getAuthorRulesTemplateFilePath()
-{
-    static std::string path = TizenPlatformConfig::makePath(
-            TZ_SYS_RO_SHARE,
-            "security-manager",
-            "policy",
-            "author-rules-template.smack");
-    return path;
+std::map<POLICY_FILE, std::string> POLICY_FILE_PATH_MAP = {
+    {POLICY_FILE::APP_RULES_TEMPLATE, POLICY_DIR_STR + "/app-rules-template.smack"},
+    {POLICY_FILE::PKG_RULES_TEMPLATE, POLICY_DIR_STR + "/pkg-rules-template.smack"},
+    {POLICY_FILE::AUTHOR_RULES_TEMPLATE, POLICY_DIR_STR + "/author-rules-template.smack"}
+};
+
+std::string getPolicyFile(enum POLICY_FILE policyFile) {
+    return POLICY_FILE_PATH_MAP[policyFile];
 }
 
 const std::string SMACK_APP_IN_PACKAGE_PERMS   = "rwxat";
@@ -217,10 +206,11 @@ void SmackRules::installApplicationRules(
         const int authorId,
         const Labels &pkgLabels)
 {
-    useTemplate(getAppRulesTemplateFilePath(), appProcessLabel, pkgName, authorId);
+    useTemplate(getPolicyFile(POLICY_FILE::APP_RULES_TEMPLATE), appProcessLabel, pkgName, authorId);
 
     if (authorId >= 0)
-        useTemplate(getAuthorRulesTemplateFilePath(), appProcessLabel, pkgName, authorId);
+        useTemplate(getPolicyFile(POLICY_FILE::AUTHOR_RULES_TEMPLATE),
+                    appProcessLabel, pkgName, authorId);
 
     updatePackageRules(pkgName, pkgLabels);
 }
@@ -231,7 +221,7 @@ void SmackRules::updatePackageRules(
 {
     SmackRules smackRules;
     smackRules.addFromTemplateFile(
-            getPkgRulesTemplateFilePath(),
+        getPolicyFile(POLICY_FILE::PKG_RULES_TEMPLATE),
             std::string(),
             pkgName,
             -1);
@@ -252,7 +242,7 @@ void SmackRules::revokeAppSubject(const std::string &appLabel)
 void SmackRules::uninstallPackageRules(const std::string &pkgName, const Labels &pkgLabels)
 {
     SmackRules smackRules;
-    smackRules.addFromTemplateFile(getPkgRulesTemplateFilePath(), {}, pkgName, -1);
+    smackRules.addFromTemplateFile(getPolicyFile(POLICY_FILE::PKG_RULES_TEMPLATE), {}, pkgName, -1);
     smackRules.generatePackageCrossDeps(pkgLabels);
     smackRules.clear();
 }
@@ -260,7 +250,8 @@ void SmackRules::uninstallPackageRules(const std::string &pkgName, const Labels
 void SmackRules::uninstallApplicationRules(const std::string &appLabel, const std::string &pkgName, const int authorId)
 {
     SmackRules smackRules;
-    smackRules.addFromTemplateFile(getAppRulesTemplateFilePath(), appLabel, pkgName, authorId);
+    smackRules.addFromTemplateFile(getPolicyFile(POLICY_FILE::APP_RULES_TEMPLATE),
+                                   appLabel, pkgName, authorId);
     smackRules.clear();
     revokeAppSubject(appLabel);
 }
@@ -276,7 +267,7 @@ void SmackRules::strReplace(std::string &haystack, const std::string &needle,
 void SmackRules::uninstallAuthorRules(const int authorId)
 {
     SmackRules smackRules;
-    smackRules.addFromTemplateFile(getAuthorRulesTemplateFilePath(), {}, {}, authorId);
+    smackRules.addFromTemplateFile(getPolicyFile(POLICY_FILE::AUTHOR_RULES_TEMPLATE), {}, {}, authorId);
     smackRules.clear();
 }
 
index 4bbb5764079b15fdc2d2209b4cb5cba486070e27..7bc4dc13e8205bdde4f0716bfd43d71fbcdd42b2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2018-2019 Samsung Electronics Co., Ltd. All rights reserved
+ *  Copyright (c) 2018-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -459,9 +459,7 @@ char const *getFallbackPath() {
     if (likely(!cachedFallbackPath)) {
         cachedFallbackPath = testLoader
             ? TEST_PRIVILEGE_FALLBACK_DB_PATH
-            : tzplatform_mkpath3(TZ_SYS_RO_SHARE, "security-manager", ".security-manager.db");
-        if (unlikely(!cachedFallbackPath))
-            fail("tzplatform_mkpath(fallback) failed");
+            : DB_FALLBACK_PATH;
     }
     return cachedFallbackPath;
 }
@@ -1061,11 +1059,7 @@ inl bool unlinkIfExists(const char *path) {
 
 int main(int argc, char *argv[]) {
     // test loader uses hardcoded database paths but otherwise strives to stay as faithful to the stock loader as feasible
-    dbPath = testLoader
-        ? TEST_DB_PATH
-        : tzplatform_mkpath(TZ_SYS_DB, ".security-manager.db");
-    if (unlikely(!dbPath))
-        fail("tzplatform_mkpath(.security-manager.db) failed");
+    dbPath = testLoader ? TEST_DB_PATH : DB_PATH;
 
     const auto dbPathLen = strlen(dbPath);
 
@@ -1118,14 +1112,14 @@ int main(int argc, char *argv[]) {
         if (unlikely(creat(pkgsInfo.t, 0644) < 0))
             fail("creat(.security-manager.db" DB_RECOVERED_SUFFIX ") failed");
 
-        // try to sync TZ_SYS_DB dir
-        const int dbdirfd = open(tzplatform_getenv(TZ_SYS_DB), O_RDONLY);
+        // try to sync DB_INSTALL_DIR dir
+        const int dbdirfd = open(DB_INSTALL_DIR, O_RDONLY);
         if (unlikely(dbdirfd < 0))
-            fail("open TZ_SYS_DB failed");
+            fail("open DB_INSTALL_DIR failed");
         if (fsync(dbdirfd) == -1)
-            fail("sync TZ_SYS_DB failed");
+            fail("sync DB_INSTALL_DIR failed");
         if (unlikely(close(dbdirfd)))
-            fail("close TZ_SYS_DB failed");
+            fail("close DB_INSTALL_DIR failed");
     }
 
     // database bringup successful, stop now if not going to write rules
index f18d33c6606acf2acbfab204e24e38880c47e052..453b70a47c732d14166db386806a6dcb3ac62f31 100644 (file)
@@ -34,8 +34,6 @@ IF(DPL_WITH_DLOG)
 ENDIF(DPL_WITH_DLOG)
 
 ADD_DEFINITIONS( "-DBOOST_TEST_DYN_LINK" )
-ADD_DEFINITIONS("-DDB_TEST_DIR=\"${DB_TEST_DIR}\"")
-
 
 ################################################################################
 
@@ -73,7 +71,6 @@ SET(SM_TESTS_SOURCES
     ${DPL_PATH}/log/src/log.cpp
     ${DPL_PATH}/log/src/old_style_log_provider.cpp
     ${PROJECT_SOURCE_DIR}/src/common/config-file.cpp
-    ${PROJECT_SOURCE_DIR}/src/common/db-config.cpp
     ${PROJECT_SOURCE_DIR}/src/common/file-lock.cpp
     ${PROJECT_SOURCE_DIR}/src/common/privilege_db.cpp
     ${PROJECT_SOURCE_DIR}/src/common/service_impl_utils.cpp
@@ -101,7 +98,6 @@ SET(SM_PERFORMANCE_TESTS_SOURCES
     ${DPL_PATH}/log/src/abstract_log_provider.cpp
     ${DPL_PATH}/log/src/log.cpp
     ${DPL_PATH}/log/src/old_style_log_provider.cpp
-    ${PROJECT_SOURCE_DIR}/src/common/db-config.cpp
     ${PROJECT_SOURCE_DIR}/src/common/config-file.cpp
     #${PROJECT_SOURCE_DIR}/src/common/file-lock.cpp
     ${PROJECT_SOURCE_DIR}/src/common/privilege_db.cpp
index c8997ba81a8d7504972b027e760e304b89d8c47d..fd040ec14b5e21bdc06149966694a302a9c6c777 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2016 - 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2016-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
 #include "config.h"
 #include "privilege_db.h"
 
-#define PRIVILEGE_DB_TEMPLATE DB_TEST_DIR"/.security-manager-test.db"
-#define PRIVILEGE_DB_EXAMPLE_V0 DB_TEST_DIR"/.security-manager-test-v0.db"
-#define PRIVILEGE_DB_CORRUPTED DB_TEST_DIR"/.security-manager-test-corrupted.db"
-#define PRIVILEGE_DB_EMPTY DB_TEST_DIR"/.security-manager-test-empty.db"
-#define PRIVILEGE_DB_WRONG_SCHEMA DB_TEST_DIR"/.security-manager-test-wrong-schema.db"
+#define PRIVILEGE_DB_TEMPLATE DB_TEST_INSTALL_DIR "/.security-manager-test.db"
+#define PRIVILEGE_DB_EXAMPLE_V0 DB_TEST_INSTALL_DIR "/.security-manager-test-v0.db"
+#define PRIVILEGE_DB_CORRUPTED DB_TEST_INSTALL_DIR "/.security-manager-test-corrupted.db"
+#define PRIVILEGE_DB_EMPTY DB_TEST_INSTALL_DIR "/.security-manager-test-empty.db"
+#define PRIVILEGE_DB_WRONG_SCHEMA DB_TEST_INSTALL_DIR "/.security-manager-test-wrong-schema.db"
 
-#define PRIVILEGE_DB_EXAMPLE_RULES DB_TEST_DIR"/.security-manager-test-rules.db"
-#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT DB_TEST_DIR"/.security-manager-test-rules.txt"
-#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_DEFAULT DB_TEST_DIR"/.security-manager-test-rules-default.txt"
-#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_PACKAGES DB_TEST_DIR"/.security-manager-test-rules-packages.txt"
-#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_EXCLUDE DB_TEST_DIR"/.security-manager-test-rules-exclude.txt"
-#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_DEFAULT_PACKAGES DB_TEST_DIR"/.security-manager-test-rules-default-packages.txt"
-#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_DEFAULT_EXCLUDE DB_TEST_DIR"/.security-manager-test-rules-default-exclude.txt"
+#define PRIVILEGE_DB_EXAMPLE_RULES DB_TEST_INSTALL_DIR "/.security-manager-test-rules.db"
+#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT DB_TEST_INSTALL_DIR "/.security-manager-test-rules.txt"
+#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_DEFAULT DB_TEST_INSTALL_DIR "/.security-manager-test-rules-default.txt"
+#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_PACKAGES DB_TEST_INSTALL_DIR "/.security-manager-test-rules-packages.txt"
+#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_EXCLUDE DB_TEST_INSTALL_DIR "/.security-manager-test-rules-exclude.txt"
+#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_DEFAULT_PACKAGES DB_TEST_INSTALL_DIR "/.security-manager-test-rules-default-packages.txt"
+#define PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT_OPTION_DEFAULT_EXCLUDE DB_TEST_INSTALL_DIR "/.security-manager-test-rules-default-exclude.txt"
 
 #define PKGS_WHITELIST "wifi-efl-ug attach-panel-camera pkg97 cert-svc-ui org.tizen.setting-location pkg22 \
 smartreply-service pkg78 org.tizen.gallery ise-engine-anthy"