From c45cb488586b0f8c54120d9eacb6491df017609b Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 24 Jun 2021 07:32:46 -0700 Subject: Test for stack overflow protection. * tests/012/stack.tl: New file. * tets/common.tl (mvtest): New macro. --- tests/012/stack.tl | 31 +++++++++++++++++++++++++++++++ tests/common.tl | 3 +++ 2 files changed, 34 insertions(+) create mode 100644 tests/012/stack.tl diff --git a/tests/012/stack.tl b/tests/012/stack.tl new file mode 100644 index 00000000..a8d06487 --- /dev/null +++ b/tests/012/stack.tl @@ -0,0 +1,31 @@ +(load "../common") + +(defun recur () (recur)) + +(defmacro so (expr) + ^(catch ,expr + (stack-overflow (exc) :so))) + +(test (so (recur)) :so) + +(test (let ((pid (fork))) + (cond + ((zerop pid) (set-stack-limit 0) (recur)) + (t (let ((status (wait pid))) + (w-ifsignaled status))))) + t) + +(defmacro infexp () + ^(foo (infexp))) + +(test (so (expand '(infexp))) :so) + +(defvarl orig (get-stack-limit)) + +(mvtest + (set-stack-limit nil) orig + (set-stack-limit orig) nil + (set-stack-limit 0) orig + (set-stack-limit orig) nil + (set-stack-limit 65536) orig + (set-stack-limit orig) 65536) diff --git a/tests/common.tl b/tests/common.tl index 4011583f..b9e46ad3 100644 --- a/tests/common.tl +++ b/tests/common.tl @@ -36,6 +36,9 @@ (defmacro mtest (. pairs) ^(progn ,*(mapcar (op cons 'test) (tuples 2 pairs)))) +(defmacro mvtest (. pairs) + ^(progn ,*(mapcar (op cons 'vtest) (tuples 2 pairs)))) + (defmacro mstest (. pairs) ^(progn ,*(mapcar (op cons 'stest) (tuples 2 pairs)))) -- cgit v1.2.3