Add check logic for bad cast 03/186903/5
authorhyunho <hhstark.kang@samsung.com>
Thu, 16 Aug 2018 10:20:38 +0000 (19:20 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Thu, 23 Aug 2018 08:08:58 +0000 (08:08 +0000)
Change-Id: I8a49cc02d51e387277ef71d61db0709963c47c14
Signed-off-by: hyunho <hhstark.kang@samsung.com>
watchface-complication-provider/watchface-complication-provider.cc
watchface-complication/watchface-complication.cc

index 015d15c..76fba7e 100644 (file)
@@ -360,7 +360,12 @@ static int _get_data_type(bundle* shared_data,
     return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
   }
 
-  *type = static_cast<watchface_complication_type_e>(strtol(type_str, NULL, 10));
+  int comp_type = strtol(type_str, NULL, 10);
+  if (!util::CheckComplicationType(comp_type)) {
+    LOGE("Invalid param");
+    return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+  }
+  *type = static_cast<watchface_complication_type_e>(comp_type);
 
   return WATCHFACE_COMPLICATION_ERROR_NONE;
 }
@@ -773,7 +778,13 @@ int watchface_complication_provider_event_get_complication_type(
       TOUCH_LAUNCH_TYPE_KEY, &value);
   if (ret != WATCHFACE_COMPLICATION_ERROR_NONE)
     return ret;
-  *type = static_cast<watchface_complication_type_e>(strtol(value, NULL, 10));
+
+  int comp_type = strtol(value, NULL, 10);
+  if (!util::CheckComplicationType(comp_type)) {
+    LOGE("Invalid param");
+    return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+  }
+  *type = static_cast<watchface_complication_type_e>(comp_type);
   free(value);
 
   return WATCHFACE_COMPLICATION_ERROR_NONE;
index 181f0f6..f5d1f9a 100644 (file)
@@ -24,6 +24,7 @@
 #include <aul.h>
 #include <dlog.h>
 
+#include "watchface-common/watchface-util.h"
 #include "watchface-complication/include/watchface-complication.h"
 #include "watchface-complication/include/watchface-complication-internal.h"
 #include "watchface-complication/complication.h"
@@ -344,7 +345,13 @@ extern "C" EXPORT_API int watchface_complication_data_get_type(
     LOGE("Invalid data !!");
     return WATCHFACE_COMPLICATION_ERROR_NO_DATA;
   }
-  *type = static_cast<watchface_complication_type_e>(strtol(type_str, NULL, 10));
+
+  int comp_type = strtol(type_str, NULL, 10);
+  if (!util::CheckComplicationType(comp_type)) {
+    LOGE("Invalid param");
+    return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+  }
+  *type = static_cast<watchface_complication_type_e>(comp_type);
   return WATCHFACE_COMPLICATION_ERROR_NONE;
 }