 
                            ...
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 | 
...