From 09e36bdd4ecfa77212ec604da0572cb5815de93c Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 8 May 2024 15:58:30 -0300 Subject: [PATCH] file: fix dup --- kernel-src/fs/file.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel-src/fs/file.c b/kernel-src/fs/file.c index 6e6f1582..f6f3493f 100644 --- a/kernel-src/fs/file.c +++ b/kernel-src/fs/file.c @@ -173,6 +173,10 @@ int fd_clone(proc_t *targproc) { int fd_dup(int oldfd, int newfd, bool exact, int fdflags, int *retfd) { proc_t *proc = _cpu()->thread->proc; int err = 0; + + if (newfd < 0 || newfd >= FDTABLE_LIMIT) + return EBADF; + MUTEX_ACQUIRE(&proc->fdmutex, false); file_t *file = oldfd < proc->fdcount ? proc->fd[oldfd].file : NULL; @@ -182,11 +186,6 @@ int fd_dup(int oldfd, int newfd, bool exact, int fdflags, int *retfd) { } if (exact) { - if (newfd >= FDTABLE_LIMIT) { - err = EBADF; - goto cleanup; - } - if (newfd >= proc->fdcount) { err = growtable(newfd + 1); if (err)