selftests/coredump: make sure invalid paths are rejected

Link: https://lore.kernel.org/20250612-work-coredump-massage-v1-8-315c0c34ba94@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
Christian Brauner
2025-06-16 17:01:22 +02:00
parent 6dfc06d328
commit 8a25350fa4
@@ -241,16 +241,19 @@ out:
static bool set_core_pattern(const char *pattern)
{
FILE *file;
int ret;
int fd;
ssize_t ret;
file = fopen("/proc/sys/kernel/core_pattern", "w");
if (!file)
fd = open("/proc/sys/kernel/core_pattern", O_WRONLY | O_CLOEXEC);
if (fd < 0)
return false;
ret = fprintf(file, "%s", pattern);
fclose(file);
ret = write(fd, pattern, strlen(pattern));
close(fd);
if (ret < 0)
return false;
fprintf(stderr, "Set core_pattern to '%s' | %zu == %zu\n", pattern, ret, strlen(pattern));
return ret == strlen(pattern);
}
@@ -1804,4 +1807,21 @@ out:
wait_and_check_coredump_server(pid_coredump_server, _metadata, self);
}
TEST_F(coredump, socket_invalid_paths)
{
ASSERT_FALSE(set_core_pattern("@ /tmp/coredump.socket"));
ASSERT_FALSE(set_core_pattern("@/tmp/../coredump.socket"));
ASSERT_FALSE(set_core_pattern("@../coredump.socket"));
ASSERT_FALSE(set_core_pattern("@/tmp/coredump.socket/.."));
ASSERT_FALSE(set_core_pattern("@.."));
ASSERT_FALSE(set_core_pattern("@@ /tmp/coredump.socket"));
ASSERT_FALSE(set_core_pattern("@@/tmp/../coredump.socket"));
ASSERT_FALSE(set_core_pattern("@@../coredump.socket"));
ASSERT_FALSE(set_core_pattern("@@/tmp/coredump.socket/.."));
ASSERT_FALSE(set_core_pattern("@@.."));
ASSERT_FALSE(set_core_pattern("@@@/tmp/coredump.socket"));
}
TEST_HARNESS_MAIN