Checking validity for restriction rule handle 22/197422/1
authorhyunuktak <hyunuk.tak@samsung.com>
Fri, 11 Jan 2019 05:55:05 +0000 (14:55 +0900)
committerhyunuktak <hyunuk.tak@samsung.com>
Fri, 11 Jan 2019 05:55:08 +0000 (14:55 +0900)
Change-Id: I36b8153bf06cffb8d3dc111c18965386b614b3e1
Signed-off-by: hyunuktak <hyunuk.tak@samsung.com>
CMakeLists.txt
packaging/capi-network-stc.spec
src/include/stc-restriction.h
src/internal/stc-private.c
src/stc-manager.c
src/stc-restriction.c

index c104c57886abbe26a89358805be6995dea147308..876f61c425d2f55ee8f0e9203fae9a025ca82adb 100755 (executable)
@@ -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")
 
index 3eb99e4d9e41e84a0ad0972440f8b23cc5935466..d4c18fff4564c724444c43563468626ffb7b8bd9 100755 (executable)
@@ -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
index 617aee1f388ebbcf79869698f163b4855bc9884f..c468403de6d24e9301e495883a0b9217e497b1fa 100755 (executable)
@@ -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);
index ef809d5b3bd83ac88385353e097a63f74c238fec..e6e93cb563c73302a5f2a1bf557073db47751134 100755 (executable)
@@ -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;
index d8ea4fa590f4d5f387c46f547474f15845938c14..1e527cf05be89b6b27903330605f9ce5bd30501c 100755 (executable)
@@ -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]",
index 3bf6fa29e6778b37fd11efd9ec14bccf517fe69d..608c892411c3222b635710091c53362020f182f9 100755 (executable)
@@ -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;
        }