]> Kevux Git Server - fll/commit
Security: Incorrect sizeof() used in process pointers of the Controller program.
authorKevin Day <Kevin@kevux.org>
Fri, 7 Jun 2024 05:22:47 +0000 (00:22 -0500)
committerKevin Day <Kevin@kevux.org>
Fri, 7 Jun 2024 05:34:38 +0000 (00:34 -0500)
commit164e8e66269efccf8d9b836dbb83646137c3858c
tree284db3aa7f8003da9782d9840e742f069a25cfb6
parent1668fe82229f61b2f6cbd40018840dbcdc386e97
Security: Incorrect sizeof() used in process pointers of the Controller program.

The "processs" structure is an array of pointers to Controller processes.
This gets rather confusing in that what the pointers are pointing to must be allocated (and deallocated) as well.

The allocation and de-allocaton process is consistent and doesn't memory leak.
However, both of these are using a sizeof() with a pointer type rather than the raw type for the inner value.

The allocation logic on the outer array is using the raw type when a pointer should be used.

Essentially, I accidentally reversed the allocation logic.
I am amazed that this worked for so long without getting noticed.

Building the Controller program as a stand alone program somehow revealed this bug.

This has the added bonus of allocating less memory.
For example, using a test run without any entry file to execute:

Before this change:
   total heap usage: 54 allocs, 54 frees, 46,622 bytes allocated
After this change:
   total heap usage: 54 allocs, 54 frees, 26,751 bytes allocated

This appears to, in part, be a regression of commit c85e0e6892da72b0737fde2cd8302b0505a9b12f.
level_3/controller/c/common/private-process.c