about summary refs log tree commit diff stats
path: root/subx/020syscalls.cc
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-05-11 19:11:13 -0700
committerKartik Agaram <vc@akkartik.com>2019-05-11 19:11:13 -0700
commit6362c51d11ef27335875469e0ff06347357f46b1 (patch)
treef7efb1941266b97f2a21166a83b1c5b9e5f734f1 /subx/020syscalls.cc
parentff167ad77a615ef0506dce1e21c973533ca83088 (diff)
downloadmu-6362c51d11ef27335875469e0ff06347357f46b1.tar.gz
5155 - check for overflow in mmap segments
Diffstat (limited to 'subx/020syscalls.cc')
-rw-r--r--subx/020syscalls.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/subx/020syscalls.cc b/subx/020syscalls.cc
index 6b9faa2c..444c9fd5 100644
--- a/subx/020syscalls.cc
+++ b/subx/020syscalls.cc
@@ -122,5 +122,10 @@ uint32_t new_segment(uint32_t length) {
   uint32_t result = Next_segment;
   Mem.push_back(vma(Next_segment, Next_segment+length));
   Next_segment -= SPACE_FOR_SEGMENT;
+  if (Next_segment <= DATA_SEGMENT) {
+    raise << "Allocated too many segments; the VM ran out of memory. "
+          << "Maybe SPACE_FOR_SEGMENT can be smaller?\n" << end();
+    exit(1);
+  }
   return result;
 }