From 2d2150c6edf9340eec07d28acb31848517bba75b Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 14 Jan 2025 23:34:27 +0100 Subject: [PATCH] Fix NULL arithmetic during system program execution For the first child process execution, `TWG(process)` is `NULL`; we need to catch that to avoid undefined behavior. --- TSRM/tsrm_win32.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/TSRM/tsrm_win32.c b/TSRM/tsrm_win32.c index 5d48ea2678a6c..da0ca7f005f58 100644 --- a/TSRM/tsrm_win32.c +++ b/TSRM/tsrm_win32.c @@ -374,14 +374,16 @@ static process_pair *process_get(FILE *stream) process_pair *ptr; process_pair *newptr; - for (ptr = TWG(process); ptr < (TWG(process) + TWG(process_size)); ptr++) { - if (ptr->stream == stream) { - break; + if (TWG(process) != NULL) { + for (ptr = TWG(process); ptr < (TWG(process) + TWG(process_size)); ptr++) { + if (ptr->stream == stream) { + break; + } } - } - if (ptr < (TWG(process) + TWG(process_size))) { - return ptr; + if (ptr < (TWG(process) + TWG(process_size))) { + return ptr; + } } newptr = (process_pair*)realloc((void*)TWG(process), (TWG(process_size)+1)*sizeof(process_pair));