Use-after-free is a C thing, not a C++ thing. Granted, C++ makes is super easy to code in C, but that's an organization problem that is already solved in any sane project.
Use-after-free is a C thing, not a C++ thing. Granted, C++ makes is super easy to code in C, but that's an organization problem that is already solved in any sane project.
https://bugs.chromium.org/p/chromium/issues/list?can=2&q=%22...
They are already tied to static analyzers, which is how they were found. What do you think the: "Sanitizer: address (ASAN)" or "Issue 938699: AutotestPrivateApiTest.AutotestPrivate getPrinterList failing on ASAN/LSAN" in the bug reports means?
The word "static" refers to compile-time; a static analysis reports errors or warnings based only on the source code of the program.
Sanitizers are dynamic analysis based on instrumentation. https://github.com/google/sanitizers/wiki/AddressSanitizer
The tool consists of a compiler instrumentation module
(currently, an LLVM pass) and a run-time library which
replaces the malloc function.
In order to detect bugs with sanitizers, you have to find a test input that actually moves program execution towards UB. This is best done with a fuzzing setup like clusterfuzz, and lots and lots of CPUs, which Google fortunately has no shortage of.https://github.com/google/clusterfuzz
As Dijkstra said, Program testing can be used to show the presence of bugs, but never to show their absence.