...
This compliant solution ensures that both input_str
and the pointer returned by malloc()
are not null.:
Code Block | ||||
---|---|---|---|---|
| ||||
#include <string.h> #include <stdlib.h> void f(const char *input_str) { size_t size; char *c_str; if (NULL == input_str) { /* Handle error */ } size = strlen(input_str) + 1; c_str = (char *)malloc(size); if (NULL == c_str) { /* Handle error */ } memcpy(c_str, input_str, size); /* ... */ free(c_str); c_str = NULL; /* ... */ } |
...
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
CodeSonar |
| LANG.MEM.NPD LANG.STRUCT.NTAD LANG.STRUCT.UPD | Null Pointer Dereferencepointer dereference Null Test After Dereferencetest after dereference Unchecked Parameter Dereferenceparameter dereference | ||||||
Compass/ROSE | Can detect violations of this rule. In particular, ROSE ensures that any pointer returned by | ||||||||
|
| CHECKED_RETURN NULL_RETURNS REVERSE_INULL
| Finds instances where a pointer is checked against Identifies functions that can return a null pointer but are not checked Identifies code that dereferences a pointer and then checks the pointer against Can find the instances where | ||||||
5.0 | |||||||||
| NPD.* *RNPD.* | ||||||||
| 45 D | Fully implemented | |||||||
PRQA QA-C |
| 2810, 2811, 2812, 2813, 2814, 2820, 2821, 2822, 2823, 2824 | Fully implemented | ||||||
|
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
...
CERT Oracle Secure Coding Standard for Java | EXP01-J. Do not use a null in a case where an object is required |
ISO/IEC TR 24772:2013 | Pointer Casting and Pointer Type Changes [HFC] Null Pointer Dereference [XYH] |
ISO/IEC TS 17961 | Dereferencing an out-of-domain pointer [nullref] |
MITRE CWE | CWE-476, NULL Pointer Dereference |
...