diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/kernel/syscalls.c | 8 | ||||
-rw-r--r-- | src/libc/fs/misc.c | 1 |
2 files changed, 8 insertions, 1 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; diff --git a/src/libc/fs/misc.c b/src/libc/fs/misc.c index d7013e8..67277bf 100644 --- a/src/libc/fs/misc.c +++ b/src/libc/fs/misc.c @@ -147,7 +147,6 @@ hid_t ufs_wait(char *buf, size_t len, struct ufs_request *req) { continue; } buf[req->len] = '\0'; - // TODO ensure passed paths don't have null bytes in them in the kernel } break; } |