Errore: strncat-param-overlap
Errore di purificazione dell'indirizzo: strncat-param-overlap
Il codice che sposta la memoria nel buffer sovrapposto può causare errori difficili da diagnosticare.
Esempio
Questo esempio mostra come AddressSanitizer può rilevare gli errori causati da parametri sovrapposti alle funzioni CRT.
In base a llvm-project/compiler-rt/test/asan/TestCases/strncat-overlap.cpp.
// example1.cpp
// strncat-param-overlap error
#include <string.h>
void bad_function() {
char buffer[] = "hello\0XXX";
strncat(buffer, buffer + 1, 3); // BOOM
return;
}
int main(int argc, char **argv) {
bad_function();
return 0;
}
Per compilare e testare questo esempio, eseguire questi comandi in un prompt dei comandi per sviluppatori di Visual Studio 2019 versione 16.9 o successiva:
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
Errore risultante
Vedi anche
Panoramica di AddressSanitizer
Problemi noti di AddressSanitizer
Riferimento alla compilazione e al linguaggio AddressSanitizer
Informazioni di riferimento sul runtime AddressSanitizer
Byte ombreggiatura AddressSanitizer
AddressSanitizer cloud o test distribuiti
Integrazione del debugger AddressSanitizer
Esempi di errore addressSanitizer