]> Kevux Git Server - controller/commitdiff
Security: Controller thread cleanup needs to check that used < size in array.
authorKevin Day <Kevin@kevux.org>
Sun, 10 Aug 2025 01:43:02 +0000 (20:43 -0500)
committerKevin Day <Kevin@kevux.org>
Sun, 10 Aug 2025 01:43:02 +0000 (20:43 -0500)
sources/c/program/controller/main/thread/cleanup.c

index 09468d65f1e0933bc44ca94b935e9f18fec2006b..7f032b38982c06a21b0adac04c10e653914d3f1d 100644 (file)
@@ -180,8 +180,8 @@ extern "C" {
           f_memory_array_resize(0, sizeof(f_number_unsigned_t), (void **) &instance->stack.array, &instance->stack.used, &instance->stack.size);
 
           // Shrink the childs array.
-          if (instance->childs.used) {
-            for (; instance->childs.used && controller_thread_enable_get(&main->thread) == controller_thread_enable_e; --instance->childs.used) {
+          if (instance->childs.used && instance->childs.used < instance->childs.size) {
+            for (; instance->childs.used && instance->childs.used < instance->childs.size && controller_thread_enable_get(&main->thread) == controller_thread_enable_e; --instance->childs.used) {
               if (instance->childs.array[instance->childs.used]) break;
             } // for