diff --git a/examples/stm32/nucleo-f429zi-baremetal/syscalls.c b/examples/stm32/nucleo-f429zi-baremetal/syscalls.c index be3210aa..ac27f093 100644 --- a/examples/stm32/nucleo-f429zi-baremetal/syscalls.c +++ b/examples/stm32/nucleo-f429zi-baremetal/syscalls.c @@ -12,8 +12,11 @@ void *_sbrk(int incr) { extern char _end; static unsigned char *heap = NULL; unsigned char *prev_heap; + unsigned char x = 0, *heap_end = (unsigned char *)((size_t) &x - 512); + (void) x; if (heap == NULL) heap = (unsigned char *) &_end; prev_heap = heap; + if (heap + incr > heap_end) return (void *) -1; heap += incr; return prev_heap; } diff --git a/examples/stm32/nucleo-f429zi-rndis/syscalls.c b/examples/stm32/nucleo-f429zi-rndis/syscalls.c index be3210aa..ac27f093 100644 --- a/examples/stm32/nucleo-f429zi-rndis/syscalls.c +++ b/examples/stm32/nucleo-f429zi-rndis/syscalls.c @@ -12,8 +12,11 @@ void *_sbrk(int incr) { extern char _end; static unsigned char *heap = NULL; unsigned char *prev_heap; + unsigned char x = 0, *heap_end = (unsigned char *)((size_t) &x - 512); + (void) x; if (heap == NULL) heap = (unsigned char *) &_end; prev_heap = heap; + if (heap + incr > heap_end) return (void *) -1; heap += incr; return prev_heap; } diff --git a/examples/stm32/nucleo-f746zg-baremetal/syscalls.c b/examples/stm32/nucleo-f746zg-baremetal/syscalls.c index be3210aa..ac27f093 100644 --- a/examples/stm32/nucleo-f746zg-baremetal/syscalls.c +++ b/examples/stm32/nucleo-f746zg-baremetal/syscalls.c @@ -12,8 +12,11 @@ void *_sbrk(int incr) { extern char _end; static unsigned char *heap = NULL; unsigned char *prev_heap; + unsigned char x = 0, *heap_end = (unsigned char *)((size_t) &x - 512); + (void) x; if (heap == NULL) heap = (unsigned char *) &_end; prev_heap = heap; + if (heap + incr > heap_end) return (void *) -1; heap += incr; return prev_heap; } diff --git a/examples/stm32/nucleo-f746zg-rndis/syscalls.c b/examples/stm32/nucleo-f746zg-rndis/syscalls.c index be3210aa..ac27f093 100644 --- a/examples/stm32/nucleo-f746zg-rndis/syscalls.c +++ b/examples/stm32/nucleo-f746zg-rndis/syscalls.c @@ -12,8 +12,11 @@ void *_sbrk(int incr) { extern char _end; static unsigned char *heap = NULL; unsigned char *prev_heap; + unsigned char x = 0, *heap_end = (unsigned char *)((size_t) &x - 512); + (void) x; if (heap == NULL) heap = (unsigned char *) &_end; prev_heap = heap; + if (heap + incr > heap_end) return (void *) -1; heap += incr; return prev_heap; } diff --git a/examples/stm32/nucleo-h743zi-baremetal/syscalls.c b/examples/stm32/nucleo-h743zi-baremetal/syscalls.c index be3210aa..ac27f093 100644 --- a/examples/stm32/nucleo-h743zi-baremetal/syscalls.c +++ b/examples/stm32/nucleo-h743zi-baremetal/syscalls.c @@ -12,8 +12,11 @@ void *_sbrk(int incr) { extern char _end; static unsigned char *heap = NULL; unsigned char *prev_heap; + unsigned char x = 0, *heap_end = (unsigned char *)((size_t) &x - 512); + (void) x; if (heap == NULL) heap = (unsigned char *) &_end; prev_heap = heap; + if (heap + incr > heap_end) return (void *) -1; heap += incr; return prev_heap; }