Error: calloc-overflow
Address Sanitizer Error: calloc-overflow
The CRT function calloc
creates an array in memory with elements initialized to 0. The arguments can create an internal error that leads to a NULL pointer as the return value.
// example1.cpp
// calloc-overflow error
#include <stdio.h>
#include <stdlib.h>
int number = -1;
int element_size = 1000;
int main() {
void *p = calloc(number, element_size); // Boom!
printf("calloc returned: %zu\n", (size_t)p);
return 0;
}
To build and test this example, run these commands in a Visual Studio 2019 version 16.9 or later developer command prompt:
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
AddressSanitizer overview
AddressSanitizer known issues
AddressSanitizer build and language reference
AddressSanitizer runtime reference
AddressSanitizer shadow bytes
AddressSanitizer cloud or distributed testing
AddressSanitizer debugger integration
AddressSanitizer error examples