summaryrefslogtreecommitdiffstats
path: root/src/userprog/syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/userprog/syscall.c')
-rw-r--r--src/userprog/syscall.c4
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: