3 ms·
It is very common for C implementation to define undefined behavior and also common for C programs to rely on this. For this reason, I think it is very misleadi
by uecker 10mo ago
It is very common for C implementation to define undefined behavior and also common for C programs to rely on this. For this reason, I think it is very misleading to say that undefined behavior is automatically exploitable or even a bug.
- johncolanduoni 10mo agoAnd the kernel is infamous for being picky about the C compilers it can be successfully built with - clang couldn’t build a working kernel for a long time, and it was mostly relying on subtle GCCisms.
- yourdetect 10mo agoI think defining terminology here might help. An attempt: Language-UB (L-UB): UB according to the guarantees of the language. Project-compiler-UB (PC-UB): The project picks compilers and compiler settings to create a stronger set of guarantees, that turns some language-UB into not being UB. Examples include turning off the strict aliasing requirement in the used compilers, or a compiler by default defining some language-UB as being defined behavior. I do not know if such terms might catch on, though. Do they seem reasonable to you?