aboutsummaryrefslogtreecommitdiffstats
path: root/fs/coredump.c
diff options
context:
space:
mode:
authorChristian Brauner <brauner@kernel.org>2025-06-12 15:25:17 +0200
committerChristian Brauner <brauner@kernel.org>2025-06-16 17:01:21 +0200
commit67c3a0b0ad1a78d7ee9c3aadaed22561f7f85466 (patch)
tree50cd329cab3569f66177d3fbd9438a1ff036c9a7 /fs/coredump.c
parentcoredump: make coredump_parse() return bool (diff)
downloadlinux-67c3a0b0ad1a78d7ee9c3aadaed22561f7f85466.tar.gz
linux-67c3a0b0ad1a78d7ee9c3aadaed22561f7f85466.zip
coredump: fix socket path validation
Make sure that we keep it extensible and well-formed. Link: https://lore.kernel.org/20250612-work-coredump-massage-v1-3-315c0c34ba94@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/coredump.c')
-rw-r--r--fs/coredump.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/coredump.c b/fs/coredump.c
index 42ceb9db2a5a..70e37435eca9 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@ -1399,9 +1399,17 @@ static inline bool check_coredump_socket(void)
if (current->nsproxy->mnt_ns != init_task.nsproxy->mnt_ns)
return false;
- /* Must be an absolute path or the socket request. */
- if (*(core_pattern + 1) != '/' && *(core_pattern + 1) != '@')
+ /* Must be an absolute path... */
+ if (core_pattern[1] != '/') {
+ /* ... or the socket request protocol... */
+ if (core_pattern[1] != '@')
+ return false;
+ /* ... and if so must be an absolute path. */
+ if (core_pattern[2] != '/')
+ return false;
+ /* Anything else is unsupported. */
return false;
+ }
return true;
}