...
Code Block | ||||
---|---|---|---|---|
| ||||
size_t size; /* initializeInitialize size, possibly by user-controlled input */ int *list = (int *)malloc(size); if (list == NULL) { /* Handle allocation error */ } else { /* Continue processing list */ } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
size_t size; /* initializeInitialize size, possibly by user-controlled input */ if (size == 0) { /* Handle error */ } int *list = (int *)malloc(size); if (list == NULL) { /* Handle allocation error */ } /* Continue processing list */ |
...
Code Block | ||||
---|---|---|---|---|
| ||||
size_t nsize; /* initializeInitialize nsize */ char *p2; char *p = (char *)malloc(100); if (p == NULL) { /* Handle error */ } /* ... */ p2 = NULL; if (nsize != 0) { p2 = (char *)realloc(p, nsize); } if (p2 == NULL) { free(p); p = NULL; return NULL; } p = p2; |
...
[ISO/IEC 9899:2011] | Section 7.22.3, "Memory Management Functions" |
[Seacord 2005a2013] | Chapter 4, "Dynamic Memory Management" |
[Vanegue 2010] | "Automated Vulnerability Analysis of Zero-Sized Heap Allocations" |
...