diff --git a/kernel/include/errno.h b/kernel/include/errno.h index efd5e4f8..29e65eae 100644 --- a/kernel/include/errno.h +++ b/kernel/include/errno.h @@ -5,6 +5,7 @@ #define ENOEXEC 8 #define EBADF 9 #define ENOMEM 12 +#define EFAULT 14 #define EISDIR 21 #define EINVAL 22 #define EMFILE 24 diff --git a/kernel/src/sys/exec.cpp b/kernel/src/sys/exec.cpp index 8d561dea..e9db4387 100644 --- a/kernel/src/sys/exec.cpp +++ b/kernel/src/sys/exec.cpp @@ -14,7 +14,7 @@ void sys_exec(Context* context, const char* pathname) { if (!pathname) { - context->rax = -EINVAL; // FIXME: This should probably return EFAULT. + context->rax = -EFAULT; return; } diff --git a/kernel/src/sys/stdio.cpp b/kernel/src/sys/stdio.cpp index bf716d5f..1d188489 100644 --- a/kernel/src/sys/stdio.cpp +++ b/kernel/src/sys/stdio.cpp @@ -66,8 +66,8 @@ void sys_write(Context* context, int fd, size_t size, const char* addr) { if (!addr) { - STDIO_FAIL(write, EINVAL); - context->rax = -EINVAL; // FIXME: This should probably return EFAULT. + STDIO_FAIL(write, EFAULT); + context->rax = -EFAULT; return; } if (fd >= TASK_MAX_FDS || fd < 0) @@ -142,8 +142,8 @@ void sys_read(Context* context, int fd, size_t size, char* buffer) { if (!buffer) { - STDIO_FAIL(read, EINVAL); - context->rax = -EINVAL; // FIXME: This should probably return EFAULT. + STDIO_FAIL(read, EFAULT); + context->rax = -EFAULT; return; } if (fd >= TASK_MAX_FDS || fd < 0) diff --git a/libs/libc/include/errno.h b/libs/libc/include/errno.h index e5553588..deef29b7 100644 --- a/libs/libc/include/errno.h +++ b/libs/libc/include/errno.h @@ -9,6 +9,7 @@ extern int errno; #define ENOEXEC 8 // Exec format error #define EBADF 9 // Bad file descriptor #define ENOMEM 12 // Cannot allocate memory +#define EFAULT 14 // Bad address #define EISDIR 21 // Is a directory #define EINVAL 22 // Invalid argument #define EMFILE 24 // Too many open files diff --git a/libs/libc/src/string.cpp b/libs/libc/src/string.cpp index 82bf0e04..93b1ae46 100644 --- a/libs/libc/src/string.cpp +++ b/libs/libc/src/string.cpp @@ -128,6 +128,7 @@ extern "C" case EMFILE: return "Too many open files"; case EISDIR: return "Is a directory"; case ENOEXEC: return "Exec format error"; + case EFAULT: return "Bad address"; case 0: return "Success"; default: return (char*)(unsigned long int)err; }