From 890906f4d42ca257a9b5c6b805b3602743eb982a Mon Sep 17 00:00:00 2001 From: liubo Date: Mon, 1 Aug 2022 16:25:48 +0800 Subject: [PATCH] etmem: add dt test code for permission check Add dt test code to etmem_common functions for the config permission check. Signed-off-by: liubo --- .../etmem_common_func_llt.c | 54 ++++++++++++++++++- .../etmem_scan_ops_export_llt.c | 2 +- .../etmem_scan_ops_llt.c | 2 +- .../etmem_slide_ops_llt.c | 14 +++++ .../etmem_socket_ops_llt.c | 8 +-- 5 files changed, 73 insertions(+), 7 deletions(-) diff --git a/etmem/test/etmem_common_func_llt_test/etmem_common_func_llt.c b/etmem/test/etmem_common_func_llt_test/etmem_common_func_llt.c index 93755ee..7f6a6ee 100644 --- a/etmem/test/etmem_common_func_llt_test/etmem_common_func_llt.c +++ b/etmem/test/etmem_common_func_llt_test/etmem_common_func_llt.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -34,7 +35,7 @@ #include "etmemd_scan.h" #include "securec.h" -#define RECLAIM_SWAPCACHE_MAGIC 0X77 +#define RECLAIM_SWAPCACHE_MAGIC 0x77 #define RECLAIM_SWAPCACHE_ON _IOW(RECLAIM_SWAPCACHE_MAGIC, 0x1, unsigned int) #define SET_SWAPCACHE_WMARK _IOW(RECLAIM_SWAPCACHE_MAGIC, 0x2, unsigned int) @@ -336,6 +337,53 @@ static void test_etmemd_send_ioctl_cmd_ok(void) fclose(fp); } +static void test_check_str_error(void) +{ + char *str = NULL; + + CU_ASSERT_EQUAL(check_str_valid(str), -1); + CU_ASSERT_EQUAL(check_str_valid(""), -1); + CU_ASSERT_EQUAL(check_str_valid(":1"), -1); + CU_ASSERT_EQUAL(check_str_valid("a:"), -1); + CU_ASSERT_EQUAL(check_str_valid("#a:1"), -1); + CU_ASSERT_EQUAL(check_str_valid("a.b:1"), -1); + CU_ASSERT_EQUAL(check_str_valid("2*4"), -1); + CU_ASSERT_EQUAL(check_str_valid("2&^4"), -1); + CU_ASSERT_EQUAL(check_str_valid("longgerthan15charchar"), -1); +} + +static void test_check_str_ok(void) +{ + CU_ASSERT_EQUAL(check_str_valid("30"), 0); + CU_ASSERT_EQUAL(check_str_valid("mysqld"), 0); + CU_ASSERT_EQUAL(check_str_valid("swap_test"), 0); + CU_ASSERT_EQUAL(check_str_valid("swap-test"), 0); + CU_ASSERT_EQUAL(check_str_valid("swap.test"), 0); + CU_ASSERT_EQUAL(check_str_valid("swap%test"), 0); + CU_ASSERT_EQUAL(check_str_valid("swap/var/run"), 0); +} + +static void test_file_check_error(void) +{ + char *file_path = NULL; + + CU_ASSERT_EQUAL(file_size_check(file_path, MAX_CONFIG_FILE_SIZE), -1); + CU_ASSERT_EQUAL(file_size_check("/proc/1/status", -1), -1); + CU_ASSERT_EQUAL(file_size_check("/proc/1/status", 0), -1); + CU_ASSERT_EQUAL(file_size_check("/proc/file_dont_exist/status", MAX_CONFIG_FILE_SIZE - 1), -1); + + CU_ASSERT_EQUAL(file_permission_check(file_path, S_IRWX_VALID), -1); + CU_ASSERT_EQUAL(file_permission_check("/proc/1/status", 0), -1); + CU_ASSERT_EQUAL(file_permission_check("/proc/file_dont_exist/status", S_IRWX_VALID), -1); + CU_ASSERT_EQUAL(file_permission_check("/proc/1", S_IRWX_VALID), -1); +} + +static void test_file_check_ok(void) +{ + CU_ASSERT_EQUAL(file_size_check("/proc/1/status", MAX_CONFIG_FILE_SIZE), 0); + CU_ASSERT_EQUAL(file_permission_check("/proc/1/status", S_IRUSR | S_IRGRP | S_IROTH), 0); +} + typedef enum { CUNIT_SCREEN = 0, CUNIT_XMLFILE, @@ -374,6 +422,10 @@ int main(int argc, const char **argv) CU_ADD_TEST(suite, test_get_uint_value_ok) == NULL || CU_ADD_TEST(suite, test_get_ulong_value_error) == NULL || CU_ADD_TEST(suite, test_get_ulong_value_ok) == NULL || + CU_ADD_TEST(suite, test_check_str_error) == NULL || + CU_ADD_TEST(suite, test_check_str_ok) == NULL || + CU_ADD_TEST(suite, test_file_check_error) == NULL || + CU_ADD_TEST(suite, test_file_check_ok) == NULL || CU_ADD_TEST(suite, test_parse_cmdline_error) == NULL || CU_ADD_TEST(suite, test_parse_cmdline_ok) == NULL || CU_ADD_TEST(suite, test_get_proc_file_error) == NULL || diff --git a/etmem/test/etmem_scan_ops_export_llt_test/etmem_scan_ops_export_llt.c b/etmem/test/etmem_scan_ops_export_llt_test/etmem_scan_ops_export_llt.c index e8e6098..2625cde 100644 --- a/etmem/test/etmem_scan_ops_export_llt_test/etmem_scan_ops_export_llt.c +++ b/etmem/test/etmem_scan_ops_export_llt_test/etmem_scan_ops_export_llt.c @@ -191,7 +191,7 @@ static void test_etmem_exp_scan_005(void) CU_ASSERT_EQUAL(etmemd_scan_init(), 0); const char *pid = "1"; - char *vmflags_array[10] = {"rd"}; + char *vmflags_array[10] = {"wr"}; int vmflag_num = 1; int is_anon_only = false; struct vmas *vmas = NULL; diff --git a/etmem/test/etmem_scan_ops_llt_test/etmem_scan_ops_llt.c b/etmem/test/etmem_scan_ops_llt_test/etmem_scan_ops_llt.c index cb1ccbc..d717b44 100644 --- a/etmem/test/etmem_scan_ops_llt_test/etmem_scan_ops_llt.c +++ b/etmem/test/etmem_scan_ops_llt_test/etmem_scan_ops_llt.c @@ -233,7 +233,7 @@ static void test_get_page_refs_valid() CU_ASSERT_EQUAL(etmemd_scan_init(), 0); const char *pid = "1"; - char *vmflags_array[10] = {"rd"}; + char *vmflags_array[10] = {"wr"}; int vmflag_num = 1; int is_anon_only = false; struct vmas *vmas = NULL; diff --git a/etmem/test/etmem_slide_ops_llt_test/etmem_slide_ops_llt.c b/etmem/test/etmem_slide_ops_llt_test/etmem_slide_ops_llt.c index 4521a60..a476f29 100644 --- a/etmem/test/etmem_slide_ops_llt_test/etmem_slide_ops_llt.c +++ b/etmem/test/etmem_slide_ops_llt_test/etmem_slide_ops_llt.c @@ -479,6 +479,20 @@ static void test_task_common_invalid_config(void) config = construct_slide_task_config(&slide_task); CU_ASSERT_NOT_EQUAL(etmemd_project_add_task(config), OPT_SUCCESS); destroy_slide_task_config(config); + + /* task value invalid */ + init_slide_task(&slide_task); + slide_task.task_param.value = ""; + config = construct_slide_task_config(&slide_task); + CU_ASSERT_NOT_EQUAL(etmemd_project_add_task(config), OPT_SUCCESS); + destroy_slide_task_config(config); + + /* task value invalid */ + init_slide_task(&slide_task); + slide_task.task_param.type = "name*^"; + config = construct_slide_task_config(&slide_task); + CU_ASSERT_NOT_EQUAL(etmemd_project_add_task(config), OPT_SUCCESS); + destroy_slide_task_config(config); } static void test_task_slide_invalid_config(void) diff --git a/etmem/test/etmem_socket_ops_llt_test/etmem_socket_ops_llt.c b/etmem/test/etmem_socket_ops_llt_test/etmem_socket_ops_llt.c index 387ffd1..8f0f0f8 100644 --- a/etmem/test/etmem_socket_ops_llt_test/etmem_socket_ops_llt.c +++ b/etmem/test/etmem_socket_ops_llt_test/etmem_socket_ops_llt.c @@ -155,7 +155,7 @@ static void etmem_pro_add_error(void) CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_ADD, "test", "file_name", ""), -1); file_name = get_length_str(RPC_SEND_FILE_MAX); CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_ADD, "test", file_name, ""), -1); - CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_ADD, "test", "file_name", "sock_name"), -1); + CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_ADD, "test", file_name, "sock_name"), -1); free(file_name); } @@ -183,7 +183,7 @@ static void etmem_pro_del_error(void) CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_DEL, "test", "file_name", ""), -1); file_name = get_length_str(RPC_SEND_FILE_MAX); CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_DEL, "test", file_name, ""), -1); - CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_DEL, "test", "file_name", "sock_name"), -1); + CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_DEL, "test", file_name, "sock_name"), -1); free(file_name); } @@ -211,7 +211,7 @@ static void etmem_pro_start_error(void) CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_START, "test", "file_name", ""), -1); file_name = get_length_str(RPC_SEND_FILE_MAX); CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_START, "test", file_name, ""), -1); - CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_START, "test", "file_name", "sock_name"), -1); + CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_START, "test", file_name, "sock_name"), -1); free(file_name); } @@ -239,7 +239,7 @@ static void etmem_pro_stop_error(void) CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_STOP, "test", "file_name", ""), -1); file_name = get_length_str(RPC_SEND_FILE_MAX); CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_STOP, "test", file_name, ""), -1); - CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_STOP, "test", "file_name", "sock_name"), -1); + CU_ASSERT_EQUAL(etmem_socket_client(ETMEM_CMD_STOP, "test", file_name, "sock_name"), -1); free(file_name); } -- 2.23.0