svace:handling wrong policy syntax 86/102786/5 accepted/tizen_3.0.m2_mobile accepted/tizen_3.0.m2_tv accepted/tizen_3.0.m2_wearable tizen_3.0.m2 accepted/tizen/3.0.m2/mobile/20170104.141911 accepted/tizen/3.0.m2/tv/20170104.142159 accepted/tizen/3.0.m2/wearable/20170104.142455 accepted/tizen/3.0/common/20161219.112826 accepted/tizen/3.0/ivi/20161219.011838 accepted/tizen/3.0/mobile/20161219.011748 accepted/tizen/3.0/tv/20161219.011806 accepted/tizen/3.0/wearable/20161219.011825 submit/tizen_3.0.m2/20170104.093751 submit/tizen_3.0/20161212.081220 submit/tizen_3.0/20161214.092923 submit/tizen_3.0/20161216.022258
authorsanghyeok.oh <sanghyeok.oh@samsung.com>
Tue, 6 Dec 2016 12:22:59 +0000 (21:22 +0900)
committerKonrad Lipinski <konrad.l@samsung.com>
Wed, 7 Dec 2016 13:53:22 +0000 (14:53 +0100)
Change-Id: I6230b4487625240a0ee9f422c0203f0ec33a5d19
Signed-off-by: sanghyeok.oh <sanghyeok.oh@samsung.com>
src/internal/policy.cpp [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index d4ab166..3bc5fce
@@ -19,6 +19,9 @@ static const char* message_dir[] = { "ANY", "SEND", "RECEIVE"};
 static const char* message_decision[] = {"NO_DECISION", "ALLOW", "DENY", "CHECK"};
 
 static MessageType __str_to_message_type(const char* str) {
+       if (!str)
+               return MessageType::ANY;
+
        if (!std::strcmp(str, "method_call"))
                return MessageType::METHOD_CALL;
        else if (!std::strcmp(str, "method_return"))
@@ -113,23 +116,22 @@ void DbAdapter::updateDecision(const boost::property_tree::ptree::value_type& v,
                if (v.second.data() != "*")
                        value = v.second.data().c_str();
 
-               if (v.first == "context") {
-                       if (std::strcmp(value, "mandatory") == 0 ) {
-                               policy_type = PolicyType::CONTEXT;
-                               policy_type_value.context = ContextType::MANDATORY;
-                       } else if (std::strcmp(value, "default") == 0) {
-                               policy_type = PolicyType::CONTEXT;
-                               policy_type_value.context = ContextType::DEFAULT;
+               if (value) {
+                       if (v.first == "context") {
+                               if (std::strcmp(value, "mandatory") == 0 ) {
+                                       policy_type = PolicyType::CONTEXT;
+                                       policy_type_value.context = ContextType::MANDATORY;
+                               } else if (std::strcmp(value, "default") == 0) {
+                                       policy_type = PolicyType::CONTEXT;
+                                       policy_type_value.context = ContextType::DEFAULT;
+                               }
+                       } else if (v.first == "user") {
+                               policy_type = PolicyType::USER;
+                               policy_type_value.user = convertToUid(value);
+                       } else if (v.first == "group") {
+                               policy_type = PolicyType::GROUP;
+                               policy_type_value.group = convertToGid(value);
                        }
-               } else if (v.first == "user") {
-                       policy_type = PolicyType::USER;
-                       policy_type_value.user = convertToUid(value);
-               } else if (v.first == "group") {
-                       policy_type = PolicyType::GROUP;
-                       policy_type_value.group = convertToGid(value);
-               } else {
-                       attr = false;
-                       t = NONE;
                }
        } else if (attr && t == ALLOW_DENY_CHECK) {
                if (v.second.data() != "*")