diff options
author | dzwdz | 2024-08-15 21:29:54 +0200 |
---|---|---|
committer | dzwdz | 2024-08-15 21:40:20 +0200 |
commit | f1bab6b74d84b972a9e817e5028b8e438bf5e83d (patch) | |
tree | a37491e8c8448b47922924294866b6dcc01b6deb /src/kernel | |
parent | 4f8bb6643aa097008341b044e67991e3ec039f38 (diff) |
kernel: disallow NUL bytes in paths
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/syscalls.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/kernel/syscalls.c b/src/kernel/syscalls.c index e94f886..a6c807c 100644 --- a/src/kernel/syscalls.c +++ b/src/kernel/syscalls.c @@ -73,6 +73,14 @@ hid_t _sys_open(const char __user *path, long len, int flags) { goto fail; } + /* I used to allow NUL in paths. Now I don't, but I want to keep the same + * API -- so let's reject paths with NUL in them. */ + for (long i = 0; i < len; i++) { + if (path_buf[i] == '\0') { + goto fail; + } + } + len = path_simplify(path_buf, path_buf, len); if (len == 0) goto fail; |