From 74e9de1b71c0fd30899c48e0bdddcbb66482f17c Mon Sep 17 00:00:00 2001 From: dbrotz <43593771+dbrotz@users.noreply.github.com> Date: Tue, 11 Jun 2019 10:45:51 -0700 Subject: [PATCH] Check for RPN stack overflow in linker --- src/link/patch.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/link/patch.c b/src/link/patch.c index 18cd43b0..44dfaa93 100644 --- a/src/link/patch.c +++ b/src/link/patch.c @@ -18,13 +18,18 @@ #include "link/mylink.h" #include "link/symbol.h" +#define RPN_STACK_SIZE 256 + static struct sSection *pCurrentSection; -static int32_t rpnstack[256]; +static int32_t rpnstack[RPN_STACK_SIZE]; static int32_t rpnp; int32_t nPC; static void rpnpush(int32_t i) { + if (rpnp >= RPN_STACK_SIZE) + errx(1, "RPN stack overflow"); + rpnstack[rpnp] = i; rpnp++; }