...
Code Block | ||
---|---|---|
| ||
size_t nsize; /* initialize nsize */ char *p2; char *p = (char *)malloc(100); /* ... */ p2 = NULL; if (nsize != 0) { p2 = (char *)realloc(p, nsize); } if (p2 == NULL) { free(p); p = NULL; return NULL; } p = p2; |
Automated Detection
The tool Compass / ROSE could detect violations of this rule by citing any usage of malloc() where the argument is a variable that has not been previously compared to be != or > 0. Often malloc()'s argument will be a multiplication of a variable with a sizeof
operator; in which case we still check the variable.
Risk Assessment
Allocating zero bytes can lead to abnormal program termination.
...