handle json exceptions 34/265234/2
authorYoungjae Shin <yj99.shin@samsung.com>
Wed, 13 Oct 2021 05:38:34 +0000 (14:38 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Wed, 13 Oct 2021 05:51:03 +0000 (14:51 +0900)
Change-Id: I024b42d63611dc8cbb9d58f1672ca8a345cfa2b2

src/trigger/CustomTemplate.cpp

index c09459afcf6a392b1413597fb9129306ec72639b..06136c08bda8c935d501f89fe7e83fa6c42d5e9c 100644 (file)
@@ -136,15 +136,20 @@ bool CustomTemplate::isValidTemplate(const Json::Value& tmplJson)
 
        std::string dataType;
        for (auto& key : keys) {
-               // Get type
-               if (tmplJson[key].isMember(CT_TYPE_ENUM)) {
-                       success = tmplJson[key][CT_TYPE_ENUM].isArray();
-                       IF_FAIL_RETURN_TAG(success, false, _E, "Invalid template");
-                       dataType = CT_TYPE_ENUM;
-               } else if (tmplJson[key].isMember(CT_KEY_TYPE)) {
-                       dataType = tmplJson[key][CT_KEY_TYPE].asString();
-                       IF_FAIL_RETURN_TAG(dataType == CT_TYPE_INTEGER || dataType == CT_TYPE_STRING,
-                               false, _E, "Invalid template");
+               try {
+                       if (tmplJson[key].isMember(CT_TYPE_ENUM)) {
+                               success = tmplJson[key][CT_TYPE_ENUM].isArray();
+                               IF_FAIL_RETURN_TAG(success, false, _E, "Invalid template");
+                               dataType = CT_TYPE_ENUM;
+                       }
+                       else if (tmplJson[key].isMember(CT_KEY_TYPE)) {
+                               dataType = tmplJson[key][CT_KEY_TYPE].asString();
+                               IF_FAIL_RETURN_TAG(dataType == CT_TYPE_INTEGER || dataType == CT_TYPE_STRING,
+                                       false, _E, "Invalid template");
+                       }
+               } catch (Json::Exception const& e) {
+                       _E("Invalid template(%s)", e.what());
+                       return false;
                }
 
                if (dataType == CT_TYPE_INTEGER) {