summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2019-07-22 18:08:52 -0400
committerFrans Kaashoek <[email protected]>2019-07-22 18:08:52 -0400
commit62091abae9613f9b6ac971b72411e5ee722cc530 (patch)
treef2b6437cdd46faa6ee1a9b295ff4f4489f2bbce9 /user
parentb2e9c8eea5d4f4edb43ae7be9e15986dbfce5b95 (diff)
downloadxv6-labs-62091abae9613f9b6ac971b72411e5ee722cc530.tar.gz
xv6-labs-62091abae9613f9b6ac971b72411e5ee722cc530.tar.bz2
xv6-labs-62091abae9613f9b6ac971b72411e5ee722cc530.zip
Test whether writing below stack fails
Diffstat (limited to 'user')
-rw-r--r--user/usertests.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/user/usertests.c b/user/usertests.c
index 5cc5099..98a5838 100644
--- a/user/usertests.c
+++ b/user/usertests.c
@@ -6,6 +6,7 @@
#include "kernel/fcntl.h"
#include "kernel/syscall.h"
#include "kernel/memlayout.h"
+#include "kernel/riscv.h"
char buf[8192];
char name[3];
@@ -1883,6 +1884,28 @@ rand()
return randstate;
}
+void
+stacktest()
+{
+ int pid;
+
+ printf(1, "stack test\n");
+ pid = fork();
+ if(pid == 0) {
+ char *sp = (char *) r_sp();
+ printf(1, "%p\n", sp);
+ sp -= 4096;
+ printf(1, "stacktest: read below stack %p\n", *sp);
+ printf(1, "stacktest: test FAILED\n");
+ exit();
+ } else if(pid < 0){
+ printf (1, "fork failed\n");
+ exit();
+ }
+ wait();
+ printf(1, "stack test done\n");
+}
+
int
main(int argc, char *argv[])
{
@@ -1912,7 +1935,8 @@ main(int argc, char *argv[])
bsstest();
sbrktest();
validatetest();
-
+ stacktest();
+
opentest();
writetest();
writetest1();