다음을 통해 공유


경고 C6054

문자열 'variable'는 0으로 종료되지 않을 수 있습니다.

설명

이 경고는 0으로 끝나는 문자열이 필요한 함수가 종료되지 않은 문자열을 전달했음을 나타냅니다. 0으로 끝나는 문자열을 예상하는 함수는 버퍼 끝 이후의 0을 찾을 수 있습니다. 이 결함으로 인해 악용 가능한 버퍼 오버런 오류 또는 충돌이 발생할 수 있습니다. 프로그램에서 전달된 문자열이 0으로 끝나는지 확인해야 합니다.

코드 분석 이름: MISSING_ZERO_TERMINATION2

예시

다음 코드는 이 경고를 생성합니다.

// Warning C6054_bad.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_bad.cpp
#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g ( )
{
    wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o' };
    func(wcArray); // Warning C6054
}

이 경고를 수정하려면 다음 샘플 코드와 같이 함수 func() 를 호출하기 전에 null 종료 wcArray 합니다.

// C6054_good.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_good.cpp
#include <sal.h>

void func( _In_z_ wchar_t* wszStr );

void g ( )
{
    wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o', '\0' };
    func(wcArray); // OK
}

참고 항목