From: hyunuktak Date: Fri, 11 Jan 2019 05:55:05 +0000 (+0900) Subject: Checking validity for restriction rule handle X-Git-Tag: submit/tizen/20190211.132033~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d4e33b9bbae95118aa57aa2daab3be27092164a7;p=platform%2Fcore%2Fapi%2Fsmart-traffic-control.git Checking validity for restriction rule handle Change-Id: I36b8153bf06cffb8d3dc111c18965386b614b3e1 Signed-off-by: hyunuktak --- diff --git a/CMakeLists.txt b/CMakeLists.txt index c104c57..876f61c 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,7 @@ ENDFOREACH(flag) #SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -fprofile-arcs -ftest-coverage") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall -Werror") SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") SET(CMAKE_C_FLAGS_RELEASE "-O2 -g") diff --git a/packaging/capi-network-stc.spec b/packaging/capi-network-stc.spec index 3eb99e4..d4c18ff 100755 --- a/packaging/capi-network-stc.spec +++ b/packaging/capi-network-stc.spec @@ -1,6 +1,6 @@ Name: capi-network-stc Summary: A Smart Traffic Control (STC) libraries in Native API -Version: 0.0.36 +Version: 0.0.37 Release: 1 Group: Network & Connectivity/API License: Apache-2.0 diff --git a/src/include/stc-restriction.h b/src/include/stc-restriction.h index 617aee1..c468403 100755 --- a/src/include/stc-restriction.h +++ b/src/include/stc-restriction.h @@ -84,6 +84,10 @@ typedef struct { * Local Functions Definition *****************************************************************************/ +void _stc_restriction_add_to_list(stc_restriction_rule_h rule); +void _stc_restriction_remove_from_list(stc_restriction_rule_h rule); +bool _stc_restriction_check_validity(stc_restriction_rule_h rule); + stc_error_e _stc_restriction_validate_rule( stc_restriction_rule_h rule); stc_error_e _stc_restriction_check_get_rule(stc_restriction_rule_h rule); diff --git a/src/internal/stc-private.c b/src/internal/stc-private.c index ef809d5..e6e93cb 100755 --- a/src/internal/stc-private.c +++ b/src/internal/stc-private.c @@ -54,6 +54,7 @@ #include "stc-util.h" #include "stc-event.h" #include "stc-signal.h" +#include "stc-restriction.h" /***************************************************************************** * Macros and Typedefs @@ -465,8 +466,10 @@ static void __stc_callback_foreach(stc_event_e e, if (info_data != NULL) { for (data = info_data; data; data = data->next) { stc_restriction_rule_h rule = data->data; + _stc_restriction_add_to_list(rule); ret = handle->restriction_cb(err, rule, handle->restriction_user_data); + _stc_restriction_remove_from_list(rule); if (ret == STC_CALLBACK_CANCEL) break; @@ -488,8 +491,10 @@ static void __stc_callback_foreach(stc_event_e e, if (info_data != NULL) { for (data = info_data; data; data = data->next) { stc_restriction_rule_h rule = data->data; + _stc_restriction_add_to_list(rule); ret = handle->restriction_all_cb(err, rule, handle->restriction_all_user_data); + _stc_restriction_remove_from_list(rule); if (ret == STC_CALLBACK_CANCEL) break; @@ -544,14 +549,20 @@ static void __stc_signal_callback(stc_event_e e, void *info_data) stc_handle_s *handle = (stc_handle_s *)list->data; switch (e) { case STC_EVENT_WARN_THRESHOLD_CROSSED_RSP: - if (handle->warn_crossed_cb) + if (handle->warn_crossed_cb) { + _stc_restriction_add_to_list((stc_restriction_rule_h)info_data); handle->warn_crossed_cb((stc_restriction_rule_h)info_data, handle->warn_crossed_user_data); + _stc_restriction_remove_from_list((stc_restriction_rule_h)info_data); + } break; case STC_EVENT_RESTRICTION_THRESHOLD_CROSSED_RSP: - if (handle->restriction_crossed_cb) + if (handle->restriction_crossed_cb) { + _stc_restriction_add_to_list((stc_restriction_rule_h)info_data); handle->restriction_crossed_cb((stc_restriction_rule_h)info_data, handle->restriction_crossed_user_data); + _stc_restriction_remove_from_list((stc_restriction_rule_h)info_data); + } break; default: break; diff --git a/src/stc-manager.c b/src/stc-manager.c index d8ea4fa..1e527cf 100755 --- a/src/stc-manager.c +++ b/src/stc-manager.c @@ -296,6 +296,11 @@ EXPORT_API int stc_set_restriction(stc_h stc, return STC_ERROR_INVALID_PARAMETER; } + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + ret = _stc_restriction_validate_rule(rule); if (ret != STC_ERROR_NONE) { STC_LOGE("Invalid restriction rule [%s]", @@ -324,6 +329,11 @@ EXPORT_API int stc_unset_restriction(stc_h stc, stc_restriction_rule_h rule) return STC_ERROR_INVALID_PARAMETER; } + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + ret = _stc_restriction_validate_rule(rule); if (ret != STC_ERROR_NONE) { STC_LOGE("Invalid restriction rule [%s]", @@ -353,6 +363,11 @@ EXPORT_API int stc_get_restriction(stc_h stc, stc_restriction_rule_h rule, return STC_ERROR_INVALID_PARAMETER; } + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + if (rule_cb == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; @@ -458,6 +473,11 @@ EXPORT_API int stc_foreach_restriction(stc_h stc, stc_restriction_rule_h rule, return STC_ERROR_INVALID_PARAMETER; } + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + if (rule_cb == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; @@ -495,6 +515,11 @@ EXPORT_API int stc_get_restriction_type(stc_h stc, stc_restriction_rule_h rule, return STC_ERROR_INVALID_PARAMETER; } + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + ret = _stc_restriction_check_get_type_rule(rule); if (ret != STC_ERROR_NONE) { STC_LOGE("Invalid restriction rule [%s]", diff --git a/src/stc-restriction.c b/src/stc-restriction.c index 3bf6fa2..608c892 100755 --- a/src/stc-restriction.c +++ b/src/stc-restriction.c @@ -57,6 +57,8 @@ * Global Variables *****************************************************************************/ +static GSList *g_restriction_list = NULL; + /***************************************************************************** * Local Functions Definition *****************************************************************************/ @@ -450,6 +452,27 @@ stc_error_e __stc_restriction_get_all( return STC_ERROR_NONE; } +void _stc_restriction_add_to_list(stc_restriction_rule_h rule) +{ + g_restriction_list = g_slist_append(g_restriction_list, rule); +} + +void _stc_restriction_remove_from_list(stc_restriction_rule_h rule) +{ + g_restriction_list = g_slist_remove(g_restriction_list, rule); +} + +bool _stc_restriction_check_validity(stc_restriction_rule_h rule) +{ + if (!rule) + return false; + + if (g_slist_find(g_restriction_list, rule)) + return true; + else + return false; +} + stc_error_e _stc_restriction_validate_rule( stc_restriction_rule_h rule) @@ -848,6 +871,8 @@ EXPORT_API int stc_restriction_rule_create(stc_h stc, stc_restriction_rule_h *ru } __stc_restriction_init_rule(restriction_rule); + _stc_restriction_add_to_list((stc_restriction_rule_h)restriction_rule); + *rule = (stc_restriction_rule_h)restriction_rule; STC_LOGI("Restriction rule successfully created"); @@ -858,12 +883,14 @@ EXPORT_API int stc_restriction_rule_destroy(stc_restriction_rule_h rule) { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } + _stc_restriction_remove_from_list(rule); __stc_restriction_deinit_rule(rule); + STC_LOGI("Restriction rule successfully destroyed"); return STC_ERROR_NONE; @@ -874,7 +901,7 @@ EXPORT_API int stc_restriction_rule_set_app_id(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -898,7 +925,7 @@ EXPORT_API int stc_restriction_rule_set_iface_name(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -921,7 +948,7 @@ EXPORT_API int stc_restriction_rule_set_iface_type(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -954,7 +981,7 @@ EXPORT_API int stc_restriction_rule_set_type(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -984,7 +1011,7 @@ EXPORT_API int stc_restriction_rule_set_limit(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1004,7 +1031,7 @@ EXPORT_API int stc_restriction_rule_set_warning_limit(stc_restriction_rule_h rul { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1025,7 +1052,7 @@ EXPORT_API int stc_restriction_rule_set_monthly_limit(stc_restriction_rule_h rul { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1046,7 +1073,7 @@ EXPORT_API int stc_restriction_rule_set_weekly_limit(stc_restriction_rule_h rule { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1067,7 +1094,7 @@ EXPORT_API int stc_restriction_rule_set_daily_limit(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1088,7 +1115,7 @@ EXPORT_API int stc_restriction_rule_set_month_start_date(stc_restriction_rule_h { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1109,7 +1136,7 @@ EXPORT_API int stc_restriction_rule_set_roaming_type(stc_restriction_rule_h rule { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1138,7 +1165,7 @@ EXPORT_API int stc_restriction_rule_set_subscriber_id(stc_restriction_rule_h rul { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1160,7 +1187,12 @@ EXPORT_API int stc_restriction_rule_get_app_id(stc_restriction_rule_h rule, char { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || app_id == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (app_id == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1182,7 +1214,12 @@ EXPORT_API int stc_restriction_rule_get_iface_name(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || iface_name == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (iface_name == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1204,7 +1241,7 @@ EXPORT_API int stc_restriction_rule_get_iface_type(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1224,7 +1261,7 @@ EXPORT_API int stc_restriction_rule_get_type(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1244,7 +1281,12 @@ EXPORT_API int stc_restriction_rule_get_limit(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || data_limit == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (data_limit == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1264,7 +1306,12 @@ EXPORT_API int stc_restriction_rule_get_warning_limit(stc_restriction_rule_h rul { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || data_warn_limit == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (data_warn_limit == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1284,7 +1331,12 @@ EXPORT_API int stc_restriction_rule_get_monthly_limit(stc_restriction_rule_h rul { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || limit == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (limit == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1304,7 +1356,12 @@ EXPORT_API int stc_restriction_rule_get_weekly_limit(stc_restriction_rule_h rule { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || limit == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (limit == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1324,7 +1381,12 @@ EXPORT_API int stc_restriction_rule_get_daily_limit(stc_restriction_rule_h rule, { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || limit == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (limit == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1344,7 +1406,12 @@ EXPORT_API int stc_restriction_rule_get_month_start_date(stc_restriction_rule_h { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || date == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (date == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1364,7 +1431,7 @@ EXPORT_API int stc_restriction_rule_get_roaming_type(stc_restriction_rule_h rule { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL) { + if (_stc_restriction_check_validity(rule) == false) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; } @@ -1385,7 +1452,12 @@ EXPORT_API int stc_restriction_rule_get_subscriber_id(stc_restriction_rule_h rul { CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC); - if (rule == NULL || subscriber_id == NULL) { + if (_stc_restriction_check_validity(rule) == false) { + STC_LOGE("Invalid parameter"); + return STC_ERROR_INVALID_PARAMETER; + } + + if (subscriber_id == NULL) { STC_LOGE("Invalid parameter"); return STC_ERROR_INVALID_PARAMETER; }