mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
pread/pwrite: fix vulnerability
This commit is contained in:
@@ -10,6 +10,11 @@ syscallret_t syscall_pread(context_t *context, int fd, void *buffer, size_t size
|
|||||||
.ret = -1
|
.ret = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!IS_USER_ADDRESS(buffer)) {
|
||||||
|
ret.errno = EFAULT;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
file_t *file = fd_get(fd);
|
file_t *file = fd_get(fd);
|
||||||
|
|
||||||
if (file == NULL || (file->flags & FILE_READ) == 0) {
|
if (file == NULL || (file->flags & FILE_READ) == 0) {
|
||||||
|
|||||||
@@ -8,6 +8,11 @@ syscallret_t syscall_pwrite(context_t *context, int fd, void *buffer, size_t siz
|
|||||||
.ret = -1
|
.ret = -1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!IS_USER_ADDRESS(buffer)) {
|
||||||
|
ret.errno = EFAULT;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
file_t *file = fd_get(fd);
|
file_t *file = fd_get(fd);
|
||||||
|
|
||||||
if (file == NULL || (file->flags & FILE_WRITE) == 0) {
|
if (file == NULL || (file->flags & FILE_WRITE) == 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user