DirtyPad is a proof-of-concept tool which tries to provoke errors on read overflows in structure fields (something that existing tools e.g. AddressSanitizer are not capable of).
The idea is to fill struct pads with garbage whenever structure is created (in static memory, on stack or in dynamic memory). This would cause read overflows to return garbage (rather than usual zero) and hopefully cause crashes.
To build in Ubuntu, install llvm and make
as usual.
To test, run make check
.
Add -Xclang -load -Xclang path/to/DirtyPad.so
to CFLAGS
and CXXFLAGS
. Or alternatively, set CC
and CXX
to
wrappers in scripts/
folder.
Tbd. Currently I mainly see this failing in packages which
do memcmp
on structs (e.g. libsndfile) which is a bad
but not-so-critical coding practice.