etmem/0084-etmem-add-dt-test-code-for-permission-check.patch
liubo fe6d2a0135 etmem: sync source repo submission
Sync the features and bug fixed in the etmem
source repository.

Signed-off-by: liubo <liubo254@huawei.com>
(cherry picked from commit 07dd6a411bce9ed3d9f617a6f01ae076e24a3adf)
2022-10-12 10:10:23 +08:00

198 lines
8.7 KiB
Diff

From 890906f4d42ca257a9b5c6b805b3602743eb982a Mon Sep 17 00:00:00 2001
From: liubo <liubo254@huawei.com>
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 <liubo254@huawei.com>
---
.../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 <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
+#include <sys/stat.h>
#include <stdbool.h>
#include <fcntl.h>
#include <limits.h>
@@ -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