fix(d5-daemon-core): cppcheck const-correctness, wire module length cap, daemonize chdir/umask, daemon confinement tests
- daemon_conf.c/server.c/test_daemon_conf.c: const-qualify parse/loop pointers; scope user_path static inside its block (clears the 9-wave-A cppcheck findings) - config.c receive_daemon_module: reject invalid/over-long wire module names (> DAEMON_MAX_MODULE_NAME) with a clean STATUS_ERROR; client side already enforced via daemon_module_name_valid in config_parse_daemon_dest - server.c daemonize: chdir(/) and umask(0) so module paths resolve from / and config-requested file modes are honored; PROTOCOL_VERSION stays 2.15.0 - test_daemon.py: confinement (read-only/unknown no-write anywhere), module-less and dot-dot destination refusal, real daemon_detach double-fork path
This commit is contained in:
@@ -148,7 +148,7 @@ static void test_daemon_conf_unknown_key_rejected() {
|
||||
char* path;
|
||||
char err[256];
|
||||
EXPECT_EQ_INT(write_conf("bogus_key = 1\n", &path), 0);
|
||||
DaemonConf* conf = daemon_conf_load(path, err, sizeof(err));
|
||||
const DaemonConf* conf = daemon_conf_load(path, err, sizeof(err));
|
||||
free(path);
|
||||
EXPECT_NULL(conf);
|
||||
EXPECT_TRUE(strstr(err, "unknown global key") != NULL);
|
||||
@@ -163,7 +163,7 @@ static void test_daemon_conf_unknown_key_rejected() {
|
||||
static void test_daemon_conf_malformed_rejected() {
|
||||
char* path;
|
||||
char err[256];
|
||||
DaemonConf* conf;
|
||||
const DaemonConf* conf;
|
||||
|
||||
EXPECT_EQ_INT(write_conf("port 8734\n", &path), 0);
|
||||
conf = daemon_conf_load(path, err, sizeof(err));
|
||||
@@ -235,7 +235,7 @@ static void test_daemon_conf_duplicate_module_rejected() {
|
||||
char* path;
|
||||
char err[256];
|
||||
EXPECT_EQ_INT(write_conf("[m]\npath = /a\n[m]\npath = /b\n", &path), 0);
|
||||
DaemonConf* conf = daemon_conf_load(path, err, sizeof(err));
|
||||
const DaemonConf* conf = daemon_conf_load(path, err, sizeof(err));
|
||||
free(path);
|
||||
EXPECT_NULL(conf);
|
||||
EXPECT_TRUE(strstr(err, "duplicate module") != NULL);
|
||||
@@ -249,7 +249,7 @@ static void test_daemon_conf_long_line_rejected() {
|
||||
memcpy(body, "[m]\npath = /x\nport = ", 21);
|
||||
body[sizeof(body) - 1] = '\0';
|
||||
EXPECT_EQ_INT(write_conf(body, &path), 0);
|
||||
DaemonConf* conf = daemon_conf_load(path, err, sizeof(err));
|
||||
const DaemonConf* conf = daemon_conf_load(path, err, sizeof(err));
|
||||
free(path);
|
||||
EXPECT_NULL(conf);
|
||||
EXPECT_TRUE(strstr(err, "exceeds the") != NULL);
|
||||
@@ -257,7 +257,8 @@ static void test_daemon_conf_long_line_rejected() {
|
||||
|
||||
static void test_daemon_conf_missing_file_rejected() {
|
||||
char err[256];
|
||||
DaemonConf* conf = daemon_conf_load("/nonexistent/fastsync_daemon_conf_zzz", err, sizeof(err));
|
||||
const DaemonConf* conf =
|
||||
daemon_conf_load("/nonexistent/fastsync_daemon_conf_zzz", err, sizeof(err));
|
||||
EXPECT_NULL(conf);
|
||||
EXPECT_TRUE(strstr(err, "cannot open") != NULL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user