오류: strncat-param-overlap
삭제자 오류 해결: strncat-param-overlap
겹치는 버퍼에서 메모리를 이동하는 코드는 진단하기 어려운 오류를 일으킬 수 있습니다.
예시
이 예제에서는 AddressSanitizer가 CRT 함수에 겹친 매개 변수로 인한 오류를 catch하는 방법을 보여 줍니다.
(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;
}
이 예제를 빌드하고 테스트하려면 Visual Studio 2019 버전 16.9 이상 개발자 명령 프롬프트에서 다음 명령을 실행합니다.
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
결과 오류
참고 항목
AddressSanitizer 개요
AddressSanitizer 알려진 문제
AddressSanitizer 빌드 및 언어 참조
AddressSanitizer 런타임 참조
AddressSanitizer 섀도 바이트
AddressSanitizer 클라우드 또는 분산 테스트
AddressSanitizer 디버거 통합
AddressSanitizer 오류 예제