DUMA (Detect Unintended Memory Access) is an open-source library (under GNU General Public License) to detect buffer overruns and under-runs in C and C++ programs. This library is a fork of Buce Perens Electric Fence library and adds some new features to it.
Features of the DUMA library:
- “Overloads” all standard memory allocation functions like malloc(), calloc(), memalign(), strdup(), operator new, operator new[] and also their counterpart deallocation functions like free(), operator delete and operator delete[]
- Utilizes the MMU (memory management unit) of the CPU:
allocates and protects an extra memory page to detect any illegal access beyond the top of the buffer (or bottom, at the user’s option) - Stops the program at exactly that instruction, which does the erroneous access to the protected memory page, allowing location of the defectice source code in a debugger
- Detects erroneous writes at the non-protected end of the memory block at deallocation of the memory block
- Detects mismatch of allocation/deallocation functions: f.e. allocation with malloc() but deallocation with operator delete
- Leak detection: detect memory blocks which were not deallocated until program exit
- Runs on Linux / U*ix and MS Windows NT/2K/XP operating systems
- Preloading of the library on Linux (and some U*ix) systems allowing tests without necessity of changing source code or recompilation
The latest version are available at the DUMA project page at Sourceforge.net