Difference between revisions of "Failure to deallocate data"

Jump to: navigation, search
Line 79: Line 79:
[[Category:General Logic Errors]]
[[Category:General Logic Error Vulnerability]]

Revision as of 15:09, 4 August 2006


If memory is allocated and not freed the process could continue to consume more and more memory and eventually crash.


  • Availability: If an attacker can find the memory leak, an attacker may be able to cause the application to leak quickly and therefore cause the application to crash.

Exposure period



  • Languages: C, C++, Fortran, Assembly

Required resources




Likelihood of exploit


Avoidance and mitigation

  • Pre-design through Build: The Boehm-Demers-Weiser Garbage Collector or valgrind can be used to detect leaks in code. This is not a complete solution as it is not 100% effective.


If a memory leak exists within a program, the longer a program runs, the more it encounters the leak scenario and the larger its memory footprint will become. An attacker could potentially discover that the leak locally or remotely can cause the leak condition rapidly so that the program crashes.


In C:

bar connection(){
  foo = malloc(1024);
  return foo;
endConnection(bar foo){
int main() {
    //thread 1 
    //On a connection

    //thread 2
    //When the connection ends

Here the problem is that every time a connection is made, more memory is allocated. So if one just opened up more and more connections, eventually the machine would run out of memory.

Related problems

Not available.