Service backend implementation for getting policies levels
[platform/core/security/security-manager.git] / src / common / service_impl.cpp
index 6855337..074495f 100644 (file)
@@ -798,5 +798,28 @@ int getPolicy(const policy_entry &filter, uid_t uid, pid_t pid, const std::strin
     return SECURITY_MANAGER_API_SUCCESS;
 }
 
+int policyGetDesc(std::vector<std::string> &levels)
+{
+    int ret = SECURITY_MANAGER_API_SUCCESS;
+
+    try {
+        CynaraAdmin::getInstance().ListPoliciesDescriptions(levels);
+    } catch (const CynaraException::OutOfMemory &e) {
+        LogError("Error - out of memory while querying Cynara for policy descriptions list: " << e.DumpToString());
+        return SECURITY_MANAGER_API_ERROR_OUT_OF_MEMORY;
+    } catch (const CynaraException::InvalidParam &e) {
+        LogError("Error - invalid parameter while querying Cynara for policy descriptions list: " << e.DumpToString());
+        return SECURITY_MANAGER_API_ERROR_INPUT_PARAM;
+    } catch (const CynaraException::ServiceNotAvailable &e) {
+        LogError("Error - service not available while querying Cynara for policy descriptions list: " << e.DumpToString());
+        return SECURITY_MANAGER_API_ERROR_NO_SUCH_SERVICE;
+    } catch (const CynaraException::Base &e) {
+        LogError("Error while getting policy descriptions list from Cynara: " << e.DumpToString());
+        return SECURITY_MANAGER_API_ERROR_SERVER_ERROR;
+    }
+
+    return ret;
+}
+
 } /* namespace ServiceImpl */
 } /* namespace SecurityManager */