libcheck / check

A unit testing framework for C
GNU Lesser General Public License v2.1
1.08k stars 209 forks source link

Fix Memory Sanitation Incompatibility #356

Open MatthewHartley opened 3 months ago

MatthewHartley commented 3 months ago

When running the tutorial project while compiling with clang v18.1.8's memory sanitizer, the result is a panic in the ppack() function for writing unitialized memory with fwrite(). Manual inspection tells me that the memory in question is in fact initialized, and valgrind confirms that there is no use of unitialized memory, so this is ultimately an issue with clang's memory sanitizer, but is nonetheless annoying. I have confirmed that setting all the memory allocated in emalloc() to 0xAA (or any other value) fixes this issue, however if memory is allocated in erealloc(), I was able to confirm that the same issue would occur, and making erealloc() capable of initializing all the excess memory required me to change the signature of the function, which might be a breaking change.