Remove duplicate codes 64/280464/3 accepted/tizen_7.0_unified accepted/tizen_7.0_unified_hotfix accepted/tizen_8.0_unified tizen_7.0 tizen_7.0_hotfix tizen_8.0 accepted/tizen/7.0/unified/20221110.062914 accepted/tizen/7.0/unified/hotfix/20221116.104906 accepted/tizen/8.0/unified/20231005.092921 accepted/tizen/unified/20220908.013422 submit/tizen/20220830.111129 tizen_7.0_m2_release tizen_8.0_m2_release
authorcheoleun moon <chleun.moon@samsung.com>
Tue, 30 Aug 2022 10:03:44 +0000 (19:03 +0900)
committercheoleun moon <chleun.moon@samsung.com>
Tue, 30 Aug 2022 11:09:56 +0000 (20:09 +0900)
Change-Id: Ibc19f8fc664e9d4891514876f3395f4f566d9582

include/capi_vpn_service_private.h
src/capi_vpn_service.c
tests/vpn-service-gtest-common.cpp

index 39f0ddd..9df2636 100755 (executable)
@@ -68,6 +68,14 @@ extern "C" {
                        return feature_rv; \
        } while (0)
 
+#define CHECK_PARAM_IF(expr, fmt, arg...) \
+       do { \
+               if (!(expr)) { \
+                       LOGE(fmt, ##arg); \
+                       return VPNSVC_ERROR_INVALID_PARAMETER; \
+               } \
+       } while (0)
+
 /**
   * @brief This data structure has a fido data and its length.
   */
index c9d1357..4617689 100755 (executable)
@@ -194,6 +194,36 @@ GVariant *_vpnsvc_invoke_dbus_method(GDBusConnection *connection,
 
        return reply;
 }
+
+static GVariant *_vpnsvc_invoke_dbus_method_vpnsvc_interface(GDBusConnection *connection,
+               const char *method,
+               GVariant *params, int *dbus_error)
+{
+       return _vpnsvc_invoke_dbus_method(connection,
+                       NETCONFIG_SERVICE_NAME,
+                       NETCONFIG_VPNSVC_PATH,
+                       NETCONFIG_VPNSVC_INTERFACE_NAME,
+                       method,
+                       params,
+                       dbus_error);
+}
+
+static bool _check_internet_privilege(GDBusConnection *connection)
+{
+       int dbus_result;
+       op = _vpnsvc_invoke_dbus_method(connection,
+                                                       NETCONFIG_SERVICE_NAME,
+                                                       NETCONFIG_NETWORK_PATH,
+                                                       NETCONFIG_NETWORK_INTERFACE,
+                                                       "CheckInternetPrivilege",
+                                                       NULL,
+                                                       &dbus_result);
+
+       if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED)
+               return false;
+       return true;
+}
+
 GVariant *_vpnsvc_invoke_dbus_method_with_fd(GDBusConnection *connection,
        const char *dest, const char *path,
        const char *interface_name, const char *method,
@@ -338,15 +368,7 @@ EXPORT_API int vpnsvc_init(const char* iface_name, vpnsvc_h *handle)
 
        LOGD("client iface_fd : %d", iface_fd);
 
-       op = _vpnsvc_invoke_dbus_method(tmp_s->connection,
-                                                       NETCONFIG_SERVICE_NAME,
-                                                       NETCONFIG_NETWORK_PATH,
-                                                       NETCONFIG_NETWORK_INTERFACE,
-                                                       "CheckInternetPrivilege",
-                                                       NULL,
-                                                       &dbus_result);
-
-       if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED) {
+       if (_check_internet_privilege(tmp_s->connection) == false) {
                close(iface_fd);
                _vpnsvc_deinit_vpnsvc_tun_s(tmp_s);
                return VPNSVC_ERROR_PERMISSION_DENIED;
@@ -419,21 +441,10 @@ EXPORT_API int vpnsvc_deinit(vpnsvc_h handle)
        LOGD("enter vpnsvc_deinit, iface_fd : %d", tun_s->fd);
 
        if (tun_s->fd > 0) {
-               op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                                       NETCONFIG_SERVICE_NAME,
-                                                                       NETCONFIG_NETWORK_PATH,
-                                                                       NETCONFIG_NETWORK_INTERFACE,
-                                                                       "CheckInternetPrivilege",
-                                                                       NULL,
-                                                                       &dbus_result);
-
-               if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED)
+               if (_check_internet_privilege(tun_s->connection) == false)
                        return VPNSVC_ERROR_PERMISSION_DENIED;
 
-               op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                                       NETCONFIG_SERVICE_NAME,
-                                                                       NETCONFIG_VPNSVC_PATH,
-                                                                       NETCONFIG_VPNSVC_INTERFACE_NAME,
+               op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                        "vpn_deinit",
                                                                        g_variant_new("(s)", tun_s->name),
                                                                        &dbus_result);
@@ -486,15 +497,7 @@ EXPORT_API int vpnsvc_protect(vpnsvc_h handle, int socket_fd, const char* iface_
                return VPNSVC_ERROR_INVALID_PARAMETER;
        }
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                               NETCONFIG_SERVICE_NAME,
-                                               NETCONFIG_NETWORK_PATH,
-                                               NETCONFIG_NETWORK_INTERFACE,
-                                               "CheckInternetPrivilege",
-                                               NULL,
-                                               &dbus_result);
-
-       if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED)
+       if (_check_internet_privilege(tun_s->connection) == false)
                return VPNSVC_ERROR_PERMISSION_DENIED;
 
        /* call vpnsvc_protect */
@@ -551,21 +554,10 @@ EXPORT_API int vpnsvc_up(vpnsvc_h handle)
 
        LOGD("iface_index %d, iface_name %s", tun_s->index, tun_s->name);
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_NETWORK_PATH,
-                                                               NETCONFIG_NETWORK_INTERFACE,
-                                                               "CheckInternetPrivilege",
-                                                               NULL,
-                                                               &dbus_result);
-
-       if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED)
+       if (_check_internet_privilege(tun_s->connection) == false)
                return VPNSVC_ERROR_PERMISSION_DENIED;
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_up",
                                                                g_variant_new("(s)", tun_s->name),
                                                                &dbus_result);
@@ -608,21 +600,10 @@ EXPORT_API int vpnsvc_down(vpnsvc_h handle)
                return VPNSVC_ERROR_INVALID_PARAMETER;
        }
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_NETWORK_PATH,
-                                                               NETCONFIG_NETWORK_INTERFACE,
-                                                               "CheckInternetPrivilege",
-                                                               NULL,
-                                                               &dbus_result);
-
-       if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED)
+       if (_check_internet_privilege(tun_s->connection) == false)
                return VPNSVC_ERROR_PERMISSION_DENIED;
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_down",
                                                                g_variant_new("(s)", tun_s->name),
                                                                &dbus_result);
@@ -773,21 +754,10 @@ EXPORT_API int vpnsvc_block_networks(vpnsvc_h handle,
        }
        nets_param_orig = g_variant_builder_end(&nets_builder);
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_NETWORK_PATH,
-                                                               NETCONFIG_NETWORK_INTERFACE,
-                                                               "CheckInternetPrivilege",
-                                                               NULL,
-                                                               &dbus_result);
-
-       if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED)
+       if (_check_internet_privilege(tun_s->connection) == false)
                return VPNSVC_ERROR_PERMISSION_DENIED;
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_block_networks",
                                                                g_variant_new("(vuvu)", nets_param_vpn, num_allow_routes_vpn,
                                                                nets_param_orig, num_allow_routes_orig),
@@ -830,21 +800,10 @@ EXPORT_API int vpnsvc_unblock_networks(vpnsvc_h handle)
                return VPNSVC_ERROR_INVALID_PARAMETER;
        }
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                                       NETCONFIG_SERVICE_NAME,
-                                                                       NETCONFIG_NETWORK_PATH,
-                                                                       NETCONFIG_NETWORK_INTERFACE,
-                                                                       "CheckInternetPrivilege",
-                                                                       NULL,
-                                                                       &dbus_result);
-
-       if (dbus_result == VPNSVC_ERROR_PERMISSION_DENIED)
+       if (_check_internet_privilege(tun_s->connection) == false)
                return VPNSVC_ERROR_PERMISSION_DENIED;
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                                       NETCONFIG_SERVICE_NAME,
-                                                                       NETCONFIG_VPNSVC_PATH,
-                                                                       NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                        "vpn_unblock_networks",
                                                                        g_variant_new("()"),
                                                                        &dbus_result);
@@ -887,10 +846,7 @@ EXPORT_API int vpnsvc_update_settings(vpnsvc_h handle)
        if (!_vpn_check_ip_address_validity(tun_s->remote_ip))
                return VPNSVC_ERROR_INVALID_PARAMETER;
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_update_settings",
                                                                g_variant_new("(issu)", tun_s->index, tun_s->local_ip, tun_s->remote_ip, tun_s->mtu),
                                                                &dbus_result);
@@ -1174,24 +1130,12 @@ EXPORT_API int vpnsvc_add_route(vpnsvc_h handle, const char *route_address, int
 
        int result = VPNSVC_ERROR_NONE;
        int dbus_result;
-       vpnsvc_tun_s *tun_s = NULL;
+       vpnsvc_tun_s *tun_s = (vpnsvc_tun_s*)handle;
 
-       /* parameter check */
-       if (handle == NULL) {
-               LOGE("handle is a NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
-       tun_s = (vpnsvc_tun_s*)handle;
+       CHECK_PARAM_IF(handle != NULL, "handle is NULL");
+       CHECK_PARAM_IF(route_address != NULL, "route_address is NULL");
 
-       if (route_address == NULL) {
-               LOGE("remove_address is NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
-
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_add_route",
                                                                g_variant_new("(ssi)", tun_s->name, route_address, prefix),
                                                                &dbus_result);
@@ -1217,24 +1161,12 @@ EXPORT_API int vpnsvc_remove_route(vpnsvc_h handle, const char *route_address, i
 
        int result = VPNSVC_ERROR_NONE;
        int dbus_result;
-       vpnsvc_tun_s *tun_s = NULL;
-
-       /* parameter check */
-       if (handle == NULL) {
-               LOGE("handle is a NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
-       tun_s = (vpnsvc_tun_s*)handle;
+       vpnsvc_tun_s *tun_s = (vpnsvc_tun_s*)handle;
 
-       if (route_address == NULL) {
-               LOGE("route_address is NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
+       CHECK_PARAM_IF(handle != NULL, "handle is NULL");
+       CHECK_PARAM_IF(route_address != NULL, "route_address is NULL");
 
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_remove_route",
                                                                g_variant_new("(ssi)", tun_s->name, route_address, prefix),
                                                                &dbus_result);
@@ -1260,24 +1192,12 @@ EXPORT_API int vpnsvc_add_dns_server(vpnsvc_h handle, const char *dns_server)
 
        int result = VPNSVC_ERROR_NONE;
        int dbus_result;
-       vpnsvc_tun_s *tun_s = NULL;
+       vpnsvc_tun_s *tun_s = (vpnsvc_tun_s*)handle;
 
-       /* parameter check */
-       if (handle == NULL) {
-               LOGE("handle is a NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
-       tun_s = (vpnsvc_tun_s*)handle;
+       CHECK_PARAM_IF(handle != NULL, "handle is NULL");
+       CHECK_PARAM_IF(dns_server != NULL, "dns_server is NULL");
 
-       if (dns_server == NULL) {
-               LOGE("dns_server is NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
-
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_add_dns_server",
                                                                g_variant_new("(ss)", tun_s->name, dns_server),
                                                                &dbus_result);
@@ -1303,23 +1223,12 @@ EXPORT_API int vpnsvc_remove_dns_server(vpnsvc_h handle, const char *dns_server)
 
        int result = VPNSVC_ERROR_NONE;
        int dbus_result;
-       vpnsvc_tun_s *tun_s = NULL;
+       vpnsvc_tun_s *tun_s = (vpnsvc_tun_s*)handle;
 
-       /* parameter check */
-       if (handle == NULL) {
-               LOGE("handle is a NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
-       tun_s = (vpnsvc_tun_s*)handle;
+       CHECK_PARAM_IF(handle != NULL, "handle is NULL");
+       CHECK_PARAM_IF(dns_server != NULL, "dns_server is NULL");
 
-       if (dns_server == NULL) {
-               LOGE("dns_server is NULL");
-               return VPNSVC_ERROR_INVALID_PARAMETER;
-       }
-       op = _vpnsvc_invoke_dbus_method(tun_s->connection,
-                                                               NETCONFIG_SERVICE_NAME,
-                                                               NETCONFIG_VPNSVC_PATH,
-                                                               NETCONFIG_VPNSVC_INTERFACE_NAME,
+       op = _vpnsvc_invoke_dbus_method_vpnsvc_interface(tun_s->connection,
                                                                "vpn_remove_dns_server",
                                                                g_variant_new("(ss)", tun_s->name, dns_server),
                                                                &dbus_result);
index 424a381..8da61ba 100755 (executable)
@@ -26,27 +26,35 @@ extern "C" {
 }
 
 class VpnServiceTest: public ::testing::Test {
-       protected:
-               vpnsvc_h handle;
-
-               void SetUp() override
-               {
-                       vpn_service_mock_set_file_result(true);
-                       vpn_service_mock_set_sysinfo_result(true);
-                       vpn_service_mock_set_gdbus_result(true);
-                       vpn_service_mock_set_io_result(true);
-                       vpn_service_mock_set_io_timeout(false);
-                       vpnsvc_init("tizen", &handle);
-               }
-
-               void TearDown() override
-               {
-                       vpnsvc_deinit(handle);
-                       vpn_service_mock_set_gdbus_result(true);
-                       vpn_service_mock_set_sysinfo_result(true);
-                       vpn_service_mock_set_io_result(true);
-                       vpn_service_mock_set_file_result(true);
-               }
+protected:
+       vpnsvc_h handle;
+
+       void SetUp() override
+       {
+               vpn_service_mock_set_file_result(true);
+               vpn_service_mock_set_sysinfo_result(true);
+               vpn_service_mock_set_gdbus_result(true);
+               vpn_service_mock_set_io_result(true);
+               vpn_service_mock_set_io_timeout(false);
+               vpnsvc_init("tizen", &handle);
+       }
+
+       void TearDown() override
+       {
+               vpnsvc_deinit(handle);
+               vpn_service_mock_set_gdbus_result(true);
+               vpn_service_mock_set_sysinfo_result(true);
+               vpn_service_mock_set_io_result(true);
+               vpn_service_mock_set_file_result(true);
+       }
+
+       char *dest_vpn_addr[2] = {"125.209.222.141", "180.70.134.19"};
+       char *dest_addr[2] = {"216.58.221.142", "206.190.36.45"};
+       int vpn_prefix[2] = {32, 32};
+       int prefix[2] = {32, 32};
+       size_t num_allow_vpn_routes = 2;
+       size_t num_allow_routes = 2;
+
 };
 
 TEST_F(VpnServiceTest, InitN)
@@ -140,13 +148,6 @@ TEST_F(VpnServiceTest, WriteP)
 
 TEST_F(VpnServiceTest, BlockNetworksN)
 {
-       char *dest_vpn_addr[2] = {"125.209.222.141", "180.70.134.19"};
-       char *dest_addr[2] = {"216.58.221.142", "206.190.36.45"};
-       int vpn_prefix[2] = {32, 32};
-       int prefix[2] = {32, 32};
-       size_t num_allow_vpn_routes = 2;
-       size_t num_allow_routes = 2;
-
        EXPECT_EQ(VPNSVC_ERROR_INVALID_PARAMETER, vpnsvc_block_networks(NULL,
                                NULL, NULL, 0, NULL, NULL, 0));
        EXPECT_EQ(VPNSVC_ERROR_INVALID_PARAMETER, vpnsvc_block_networks(handle,
@@ -160,13 +161,6 @@ TEST_F(VpnServiceTest, BlockNetworksN)
 
 TEST_F(VpnServiceTest, BlockNetworksP)
 {
-       char *dest_vpn_addr[2] = {"125.209.222.141", "180.70.134.19"};
-       char *dest_addr[2] = {"216.58.221.142", "206.190.36.45"};
-       int vpn_prefix[2] = {32, 32};
-       int prefix[2] = {32, 32};
-       size_t num_allow_vpn_routes = 2;
-       size_t num_allow_routes = 2;
-
        EXPECT_EQ(VPNSVC_ERROR_NONE, vpnsvc_block_networks(handle,
                                dest_vpn_addr, vpn_prefix, num_allow_vpn_routes,
                                dest_addr, prefix, num_allow_routes));