• CWE-1341: Multiple Releases of Same Resource or Handle

Das Produkt versucht, eine Ressource oder einen Handle mehrfach zu schließen oder freizugeben, ohne dass zwischen den Schließoperationen ein erfolgreicher Open-Vorgang stattgefunden hat.

CWE-1341: Multiple Releases of Same Resource or Handle

CWE ID: 1341
Name: Multiple Releases of Same Resource or Handle

Beschreibung

Das Produkt versucht, eine Ressource oder einen Handle mehrfach zu schließen oder freizugeben, ohne dass zwischen den Schließoperationen ein erfolgreicher Open-Vorgang stattgefunden hat.

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Ändern Sie die Logik des Codes so, dass die Ressource nur einmal geschlossen wird. Dies kann eine Vereinfachung oder Refactoring erfordern. Diese Korrektur kann in kleinen Codeblöcken einfach durchzuführen sein, wird aber schwieriger, wenn mehrere Closes in komplexen Conditionals eingebettet sind.

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Es kann effektiv sein, ein Flag zu implementieren, das (1) gesetzt wird, wenn die Ressource geöffnet wird, (2) gelöscht wird, wenn sie geschlossen wird, und (3) vor dem Schließen geprüft wird. Dieser Ansatz kann nützlich sein, wenn es unterschiedliche Fälle gibt, in denen Closes durchgeführt werden müssen. Allerdings kann die Flag-Verfolgung die Codekomplexität erhöhen und erfordert eine sorgfältige Einhaltung durch den Programmierer.

Maßnahme (Implementation)

Effektivität: Defense in Depth
Beschreibung: Beim Schließen einer Ressource sollte die zugehörige Variable auf NULL oder einen äquivalenten Wert für die jeweilige Programmiersprache gesetzt werden. Einige APIs ignorieren diesen Null-Wert ohne Fehler zu verursachen. Bei anderen APIs kann dies zu Application Crashes oder Exceptions führen, was dennoch vorzuziehen sein mag, als unbeabsichtigte Ressourcen wie Memory oder Data zu korrumpieren.