From f5a2f08359773a6233de30d95ae7aaf6d30d76c0 Mon Sep 17 00:00:00 2001 From: hyunho Date: Thu, 16 Aug 2018 19:20:38 +0900 Subject: [PATCH] Add check logic for bad cast Change-Id: I8a49cc02d51e387277ef71d61db0709963c47c14 Signed-off-by: hyunho --- .../watchface-complication-provider.cc | 15 +++++++++++++-- watchface-complication/watchface-complication.cc | 9 ++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/watchface-complication-provider/watchface-complication-provider.cc b/watchface-complication-provider/watchface-complication-provider.cc index 015d15c..76fba7e 100644 --- a/watchface-complication-provider/watchface-complication-provider.cc +++ b/watchface-complication-provider/watchface-complication-provider.cc @@ -360,7 +360,12 @@ static int _get_data_type(bundle* shared_data, return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER; } - *type = static_cast(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(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(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(comp_type); free(value); return WATCHFACE_COMPLICATION_ERROR_NONE; diff --git a/watchface-complication/watchface-complication.cc b/watchface-complication/watchface-complication.cc index 181f0f6..f5d1f9a 100644 --- a/watchface-complication/watchface-complication.cc +++ b/watchface-complication/watchface-complication.cc @@ -24,6 +24,7 @@ #include #include +#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(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(comp_type); return WATCHFACE_COMPLICATION_ERROR_NONE; } -- 2.7.4