From 26e38be761a6efe6395cbaace21f0ea8f101f88a Mon Sep 17 00:00:00 2001 From: sBubshait Date: Fri, 8 Nov 2024 14:21:16 +0000 Subject: [PATCH] Update validate_user_pointer to check if the ptr is mapped to a physical memory address, w/ E --- src/userprog/syscall.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/userprog/syscall.c b/src/userprog/syscall.c index 1dbe73b..506498b 100644 --- a/src/userprog/syscall.c +++ b/src/userprog/syscall.c @@ -5,6 +5,7 @@ #include "threads/interrupt.h" #include "threads/thread.h" #include "userprog/process.h" +#include "userprog/pagedir.h" #include #include @@ -227,8 +228,9 @@ validate_user_pointer (const void *ptr, size_t size) { if (size > 0 && (ptr == NULL || !is_user_vaddr (ptr) || - !is_user_vaddr (ptr + size - 1))) + !is_user_vaddr (ptr + size - 1) || + pagedir_get_page (thread_current()->pagedir, ptr) == NULL)) thread_exit (); - return ptr; + return (void *) ptr; }