X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftests%2Fuserprog%2Fboundary.c;h=2e81df48e0beb5c75489e6bdb8c781c39b771213;hb=16c7d34d02045bc7e6165a13c549a7968e074d4b;hp=50f2618d3db62852a7368630e267eba22afeb27d;hpb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;p=pintos-anon diff --git a/src/tests/userprog/boundary.c b/src/tests/userprog/boundary.c index 50f2618..2e81df4 100644 --- a/src/tests/userprog/boundary.c +++ b/src/tests/userprog/boundary.c @@ -1,3 +1,7 @@ +/* Utility function for tests that try to break system calls by + passing them data that crosses from one virtual page to + another. */ + #include #include #include @@ -27,3 +31,14 @@ copy_string_across_boundary (const char *src) return p; } +/* Returns an address that is invalid, but the preceding bytes + * are all valid. Used to position information such that the + * first byte of the information is valid, but not all the + * information is valid. */ +void * +get_bad_boundary (void) +{ + /* This code assumes that dst will be in the highest page + * allocated to the user process. */ + return (void *) ROUND_UP ((uintptr_t) (dst + sizeof(dst) - 1), 4096); +}