Fix security-manager/libsecurity-manager-client cyclic dependency 21/189421/2
authorDariusz Michaluk <d.michaluk@samsung.com>
Mon, 17 Sep 2018 12:16:33 +0000 (14:16 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Wed, 19 Sep 2018 09:13:50 +0000 (11:13 +0200)
Change-Id: Ic4c66e520964b54a1f8f6cc273517405d29b6b6a

CMakeLists.txt
packaging/security-manager.spec
src/cmd/CMakeLists.txt
src/cmd/security-manager-cmd.cpp
src/server/CMakeLists.txt
src/server/init-db/security-manager-init-db.cpp [new file with mode: 0644]

index 93a5e63f1411324f7041c7ea33e312d448b1c6db..4eccedff00184ff4c1a9fe1aa868232ac449c958 100644 (file)
@@ -103,6 +103,7 @@ SET(TARGET_COMMON "security-manager-commons")
 SET(TARGET_CMD    "security-manager-cmd")
 SET(TARGET_CLEANUP "security-manager-cleanup")
 SET(TARGET_NSS     "security-manager-nss")
+SET(TARGET_INITDB  "security-manager-init-db")
 
 ADD_SUBDIRECTORY(src)
 ADD_SUBDIRECTORY(pc)
index 171d985385fccff9327e12587ebcb90140b68d9d..816ce08cfae33c6574ea1d92bcc75755c522d4a0 100644 (file)
@@ -162,14 +162,14 @@ rm -rf %{buildroot}
 systemctl daemon-reload
 if [ $1 = 1 ]; then
     # installation
-    security-manager-cmd --init-db
+    security-manager-init-db
     systemctl start security-manager.service security-manager.socket
 fi
 
 if [ $1 = 2 ]; then
     # update
     systemctl stop security-manager.service security-manager.socket
-    security-manager-cmd --init-db
+    security-manager-init-db
     systemctl start security-manager.service security-manager.socket
 fi
 
@@ -256,6 +256,7 @@ chsmack -a System %{db_test_dir}/.security-manager-test-wrong-schema.db-journal
 %attr(755,root,root) %{_bindir}/security-manager
 %attr(755,root,root) %{_bindir}/security-manager-cmd
 %attr(755,root,root) %{_bindir}/security-manager-cleanup
+%attr(755,root,root) %{_bindir}/security-manager-init-db
 %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
index 1fe731d44a19f68d7edf72c81515243bde1fd4f9..f1ae65012b2b13fe14f050a8ead6ac39e403365d 100644 (file)
@@ -8,7 +8,6 @@ INCLUDE_DIRECTORIES(
     ${INCLUDE_PATH}
     ${COMMON_PATH}/include
     ${DPL_PATH}/core/include
-    ${DPL_PATH}/db/include
     ${DPL_PATH}/log/include
     )
 
index 352e3fcb2e0201c2756d1a9a22a13db9ba8e5b93..89faebf9a72c4bed58e06e525a010f1a59e3bb3e 100644 (file)
@@ -40,7 +40,6 @@
 
 #include <config.h>
 #include <filesystem.h>
-#include <privilege_db.h>
 
 namespace po = boost::program_options;
 
@@ -76,7 +75,6 @@ static po::options_description getGenericOptions()
          ("manage-users,m", po::value<std::string>(), "add or remove user, parameter is either a/add or r/remove")
          ("manage-privilege,o", po::value<std::string>(), "allow or deny privilege, parameter is either a/allow or d/deny")
          ("backup,b", "make a backup of the database file")
-         ("init-db,d", "initialize the security-manager database as when running the manager")
          ;
     return opts;
 }
@@ -485,9 +483,6 @@ int main(int argc, char *argv[])
             if (SECURITY_MANAGER_SUCCESS == FS::overwriteFile(Config::getPrivilegeDbPath(),
                                                               Config::getPrivilegeDbFallbackPath()))
                 return EXIT_SUCCESS;
-        } else if (vm.count("init-db")) {
-            SecurityManager::initDb();
-            return EXIT_SUCCESS;
         } else {
             std::cout << "No command argument was given." << std::endl;
             usage(std::string(argv[0]));
index 4e565164f9172b04963f2e62dea7ba925d52f624..373ab029423a437fd9b861298f28aad589801e92 100644 (file)
@@ -57,6 +57,20 @@ SET_TARGET_PROPERTIES(${TARGET_CLEANUP}
 TARGET_LINK_LIBRARIES(${TARGET_CLEANUP}
     ${TARGET_COMMON}
     )
+
+########## INIT-DB SERVICE ######################################
+SET(INITDB_SOURCES
+    ${SERVER_PATH}/init-db/security-manager-init-db.cpp
+    )
+ADD_EXECUTABLE(${TARGET_INITDB} ${INITDB_SOURCES})
+SET_TARGET_PROPERTIES(${TARGET_INITDB}
+    PROPERTIES
+        COMPILE_FLAGS "-D_GNU_SOURCE -fvisibility=hidden")
+
+TARGET_LINK_LIBRARIES(${TARGET_INITDB}
+    ${TARGET_COMMON}
+    )
+
 INSTALL(TARGETS ${TARGET_CLEANUP} DESTINATION ${BIN_INSTALL_DIR})
+INSTALL(TARGETS ${TARGET_INITDB} DESTINATION ${BIN_INSTALL_DIR})
 INSTALL(TARGETS ${TARGET_SERVER} DESTINATION ${BIN_INSTALL_DIR})
-
diff --git a/src/server/init-db/security-manager-init-db.cpp b/src/server/init-db/security-manager-init-db.cpp
new file mode 100644 (file)
index 0000000..6be07c5
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ *  Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Contact: Rafal Krypa <r.krypa@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        security-manager-init-db.cpp
+ * @author      Dariusz Michaluk (d.michaluk@samsung.com)
+ * @version     1.0
+ * @brief       Implementation of security-manager-init-db service
+ */
+
+#include <iostream>
+#include <privilege_db.h>
+
+int main(void)
+{
+    try {
+        SecurityManager::initDb();
+        return EXIT_SUCCESS;
+    } catch (...) {
+        std::cerr << "Unknown exception thrown" << std::endl;
+    }
+
+    return EXIT_FAILURE;
+}