CWE ID: 590
Name: Free of Memory not on the Heap
free()
auf einen Pointer zu Speicher auf, der nicht mit zugehörigen Heap-Allokationsfunktionen wie malloc()
, calloc()
oder realloc()
allokiert wurde.Wenn free()
auf einen ungültigen Pointer aufgerufen wird, können die Speicherverwaltungsdatenstrukturen des Programms beschädigt werden. Diese Beschädigung kann dazu führen, dass das Programm abstürzt. In einigen Fällen kann ein Angreifer möglicherweise free()
dazu bringen, auf kontrollierbare Speicherbereiche zu operieren, um kritische Programmvariablen zu modifizieren oder Code auszuführen.
Effektivität: Unknown
Beschreibung: Befreien Sie ausschließlich Pointer, für die Sie zuvor malloc()
aufgerufen haben. Dies ist die empfohlene Vorgehensweise. Verfolgen Sie, welche Pointer auf den Beginn gültiger Speicherblöcke zeigen, und befreien Sie diese nur einmal.
Effektivität: Unknown
Beschreibung: Bevor ein Pointer freigegeben wird, sollte der Programmierer sicherstellen, dass der Pointer zuvor auf dem Heap allokiert wurde und dass der Speicher dem Programmierer gehört. Das Freigeben eines nicht allokierten Pointers führt zu undefiniertem Verhalten im Programm.
Effektivität: Unknown
Beschreibung: Verwenden Sie eine Programmiersprache, die Abstraktionen für die Speicherallokation und -freigabe bereitstellt.
Effektivität: Unknown
Beschreibung: Nutzen Sie ein Werkzeug zur dynamischen Erkennung von Speicherverwaltungsproblemen, wie beispielsweise Valgrind.