about summary refs log tree commit diff stats
path: root/subx/012elf.cc
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-05-11 00:30:31 -0700
committerKartik Agaram <vc@akkartik.com>2019-05-11 00:30:31 -0700
commit36c745f8e0cb24b781a5cb6bb7e829937dabec46 (patch)
tree8142f7ccf3ba62c5e16cfaacf6248ce95c1e69c8 /subx/012elf.cc
parent1ebb7614921a2b426ed84c4c51b100176e2a4187 (diff)
downloadmu-36c745f8e0cb24b781a5cb6bb7e829937dabec46.tar.gz
5152 - check for stack underflow/overflow in VM
Diffstat (limited to 'subx/012elf.cc')
-rw-r--r--subx/012elf.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/subx/012elf.cc b/subx/012elf.cc
index d0a3fbd2..a77c6056 100644
--- a/subx/012elf.cc
+++ b/subx/012elf.cc
@@ -90,6 +90,7 @@ void load_elf_contents(uint8_t* elf_contents, size_t size, int argc, char* argv[
 
 void push(uint32_t val) {
   Reg[ESP].u -= 4;
+  assert(Reg[ESP].u >= STACK_SEGMENT);
   trace(Callstack_depth+1, "run") << "decrementing ESP to 0x" << HEXWORD << Reg[ESP].u << end();
   trace(Callstack_depth+1, "run") << "pushing value 0x" << HEXWORD << val << end();
   write_mem_u32(Reg[ESP].u, val);