Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Fout:
Adres opschoningsfout: strncat-param-overlap
Code waarmee geheugen in overlappende buffer wordt verplaatst, kan leiden tot moeilijk te diagnosticeren fouten.
Voorbeeld
In dit voorbeeld ziet u hoe AddressSanitizer fouten kan ondervangen die worden veroorzaakt door overlappende parameters voor CRT-functies.
(Gebaseerd op 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;
}
Als u dit voorbeeld wilt bouwen en testen, voert u deze opdrachten uit in een Opdrachtprompt voor ontwikkelaars van Visual Studio 2019 versie 16.9 of hoger:
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
Resulterende fout
Zie ook
Overzicht van AddressSanitizer
AddressSanitizer bekende problemen
AddressSanitizer-build- en taalreferenties
naslaginformatie over AddressSanitizer-runtime
addressSanitizer schaduwbytes
AddressSanitizer-cloud of gedistribueerde tests
integratie van AddressSanitizer-foutopsporingsprogramma's
voorbeelden van AddressSanitizer-fouten