From: Zofia Abramowska Date: Fri, 24 Apr 2020 15:08:33 +0000 (+0200) Subject: Let template manager throw for configuration errors X-Git-Tag: submit/tizen/20200514.103903~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F88%2F231888%2F2;p=platform%2Fcore%2Fsecurity%2Fsecurity-manager.git Let template manager throw for configuration errors Change-Id: Iec25cd08ae5cff6ef721b77022d07f734898f773 --- diff --git a/src/common/include/smack-rules.h b/src/common/include/smack-rules.h index 35f6d8dc..53e7402a 100644 --- a/src/common/include/smack-rules.h +++ b/src/common/include/smack-rules.h @@ -38,9 +38,7 @@ namespace SecurityManager { class SmackRules { public: - SmackRules() : m_templateMgr(POLICY_INSTALL_DIR) { - m_templateMgr.init(); - } + SmackRules(); /** * Install package-specific smack rules plus add rules for specified external apps. diff --git a/src/common/include/template-manager.h b/src/common/include/template-manager.h index 68449028..bb6aba9c 100644 --- a/src/common/include/template-manager.h +++ b/src/common/include/template-manager.h @@ -25,12 +25,20 @@ #include #include +#include #include #include "config-file.h" namespace SecurityManager { +class TemplateManagerException { +public: + DECLARE_EXCEPTION_TYPE(SecurityManager::Exception, Base) + DECLARE_EXCEPTION_TYPE(Base, ConfigFileError) + DECLARE_EXCEPTION_TYPE(Base, ConfigParseError) +}; + class TemplateManager { public: explicit TemplateManager(const std::string &rootDir) : m_rootDir(rootDir){} diff --git a/src/common/smack-rules.cpp b/src/common/smack-rules.cpp index c2058652..68aac2ff 100644 --- a/src/common/smack-rules.cpp +++ b/src/common/smack-rules.cpp @@ -74,6 +74,14 @@ const std::string SMACK_APP_PATH_USER_PERMS = "rwxat"; } // namespace anonymous +SmackRules::SmackRules() : m_templateMgr(POLICY_INSTALL_DIR) { + try { + m_templateMgr.init(); + } catch (TemplateManagerException::Base &e) { + LogError("Error loading template files: " << e.DumpToString()); + } +} + void SmackRules::addFromTemplate( SmackAccesses &rules, TemplateManager::Type type, diff --git a/src/common/template-manager.cpp b/src/common/template-manager.cpp index 3f6cc092..605d9ee2 100644 --- a/src/common/template-manager.cpp +++ b/src/common/template-manager.cpp @@ -57,8 +57,10 @@ void TemplateManager::init() loadFiles(); } catch (FS::Exception::Base &e) { LogError("Error loading config files: " << e.DumpToString()); + Throw(TemplateManagerException::ConfigFileError); } catch (SmackException::FileError &e) { LogError("Error parsing config files: " << e.DumpToString()); + Throw(TemplateManagerException::ConfigParseError); } }