...
Wiki Markup |
---|
This example from Kernighan and Ritchie \[[Kernighan 88|AA. C References#Kernighan 88]\] illustratesshows both the incorrect and correct techniques for deleting items from a linked list. The incorrect solution, clearly marked as wrong in the book, is bad because {{p}} is freed before the {{p->next}} is executed, so {{p->next}} reads memory that has already been freed. |
...
Fortify SCA Version 5.0 is able to detect violations of this rule.
The tool Compass Rose /ROSE can detect violations of the rule, except for cases such as the for loop in the first example.
...
Wiki Markup |
---|
\[[ISO/IEC 9899-:1999|AA. C References#ISO/IEC 9899-1999]\] Section 7.20.3.2, "The free function" \[[ISO/IEC PDTR 24772|AA. C References#ISO/IEC PDTR 24772]\] "DCM Dangling references to stack frames" and "XYK Dangling Reference to Heap" \[[Kernighan 88|AA. C References#Kernighan 88]\] Section 7.8.5, "Storage Management" \[[MISRA 04|AA. C References#MISRA 04]\] Rule 17.6 \[[MITRE 07|AA. C References#MITRE 07]\] [CWE ID 416|http://cwe.mitre.org/data/definitions/416.html], "Use After Free" \[[OWASP Freed Memory|AA. C References#OWASP Freed Memory]\] \[[Seacord 05|AA. C References#Seacord 05]\] Chapter 4, "Dynamic Memory Management" \[[Viega 05|AA. C References#Viega 05]\] Section 5.2.19, "Using freed memory" |
...