As noted in undefined behavior 179 of Annex J of the C standard Standard [ISO/IEC 9899:2011], the behavior of a program is undefined when
...
Freeing memory that is not allocated dynamically can lead to serious errors similar to those discussed in MEM31-C. Free dynamically allocated memory exactly once. The specific consequences of this error depend on the implementation, but they range from nothing to abnormal program termination. Regardless of the implementation, avoid calling free()
on anything other than a pointer returned by a dynamic - memory allocation function, such as malloc()
, calloc()
, realloc()
, or aligned_alloc
.
...
Tool | Version | Checker | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Include Page | LDRA_V | LDRA_V | |||||||||||
Compass/ROSE | Can detect some violations of this rule | 483 S | Fully implemented . | ||||||||||
| BAD_FREE | Identifies calls to | |||||||||||
| FNH.MIGHT | ||||||||||||
| 483 S | Fully implemented | Compass/ROSE | Can detect some violations of this rule. |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
...
...
...
...
Free of invalid pointer not on the heap |
...
Bibliography
[Seacord 2005] Chapter 4, "Dynamic Memory Management"
...