diff options
Diffstat (limited to 'src/userprog/syscall.c')
| -rw-r--r-- | src/userprog/syscall.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/userprog/syscall.c b/src/userprog/syscall.c index e845edb..8f4a08e 100644 --- a/src/userprog/syscall.c +++ b/src/userprog/syscall.c @@ -205,7 +205,7 @@ syscall_handler (struct intr_frame *f UNUSED) tid_t *child_tid; unsigned *size; void **buf; - + switch (*syscall_number) { case 0: // halt @@ -255,6 +255,7 @@ syscall_handler (struct intr_frame *f UNUSED) CHECK_PTR_AND_MAYBE_EXIT (buf); CHECK_PTR_AND_MAYBE_EXIT (*buf); CHECK_PTR_AND_MAYBE_EXIT (size); + CHECK_PTR_AND_MAYBE_EXIT (*buf + *size); f->eax = read (*fd_i, *buf, *size); break; case 9: @@ -266,6 +267,7 @@ syscall_handler (struct intr_frame *f UNUSED) CHECK_PTR_AND_MAYBE_EXIT (buf); CHECK_PTR_AND_MAYBE_EXIT (*buf); CHECK_PTR_AND_MAYBE_EXIT (size); + CHECK_PTR_AND_MAYBE_EXIT (*buf + *size); f->eax = write (*fd_i, *buf, *size); break; case 12: |
