diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-03-14 13:38:21 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-03-14 13:38:21 +0100 |
| commit | 4ee2a016fdaf98a8f34f76ced3a215aff1f5e3c4 (patch) | |
| tree | 549514ec033dfeda7b9ee76f85cb50b4b377b3a3 | |
| parent | 20fa5aa70d2a5e599ea2604f51baa49c6e891ab3 (diff) | |
| download | pintos-4ee2a016fdaf98a8f34f76ced3a215aff1f5e3c4.tar.gz | |
also check other end of passed buffers
| -rw-r--r-- | src/userprog/build/fail | 0 | ||||
| -rw-r--r-- | src/userprog/syscall.c | 4 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/userprog/build/fail b/src/userprog/build/fail deleted file mode 100644 index e69de29..0000000 --- a/src/userprog/build/fail +++ /dev/null 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: |
