summaryrefslogtreecommitdiff
path: root/usertests.c
diff options
context:
space:
mode:
map kernel instructions r/o
Diffstat (limited to 'usertests.c')
-rw-r--r--usertests.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/usertests.c b/usertests.c
index e62703d..177ffba 100644
--- a/usertests.c
+++ b/usertests.c
@@ -1419,6 +1419,7 @@ validatetest(void)
printf(stdout, "validate ok\n");
}
+// does unintialized data start out zero?
char uninit[10000];
void
bsstest(void)
@@ -1434,6 +1435,32 @@ bsstest(void)
printf(stdout, "bss test ok\n");
}
+// does exec do something sensible if the arguments
+// are larger than a page?
+void
+bigargtest(void)
+{
+ int pid, ppid;
+
+ ppid = getpid();
+ pid = fork();
+ if(pid == 0){
+ char *args[100];
+ int i;
+ for(i = 0; i < 99; i++)
+ args[i] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+ args[99] = 0;
+ printf(stdout, "bigarg test\n");
+ exec("echo", args);
+ printf(stdout, "bigarg test ok\n");
+ exit();
+ } else if(pid < 0){
+ printf(stdout, "bigargtest: fork failed\n");
+ exit();
+ }
+ wait();
+}
+
int
main(int argc, char *argv[])
{
@@ -1445,6 +1472,7 @@ main(int argc, char *argv[])
}
close(open("usertests.ran", O_CREATE));
+ // bigargtest();
bsstest();
sbrktest();
validatetest();