sprintf·길이 제한 단계별 흐름 sprintf는 왜 출력 형식이 맞아도 destination buffer를 넘칠 수 있을까요? Destination buffer가 저장할 수 있는 총 byte 수를 확인합니다. → 고정 문자열·사용자 입력·마지막 null terminator의 최대 길이를 더합니다. → sprintf는 destination 크기를 전달받지 않으므로 긴 결과를 계속 씁니다. → 인접 memory가 덮여 crash나 exploit 가능성이 생깁니다. → snprintf에 실제 buffer size를 전달하고 return value가 size 이상인지 확인합니다. → 가능하면 필요한 길이를 계산해 동적으로 할당하거나 더 안전한 string abstraction을 사용합니다. sprintf는 왜 출력 형식이 맞아도 destination buffer를넘칠 수 있을까요? 화살표를 왼쪽에서 오른쪽으로 따라가며 입력·처리·결과를 확인하세요. 1 Destinationbuffer가 저장할 수있는 총 byte 수를확인합니다. 2 고정 문자열·사용자입력·마지막 nullterminator의최대 길이를 더합니다. 3 sprintf는destination크기를 전달받지 않으므로긴 결과를 계속 씁니다. 4 인접 memory가 덮여crash나exploit 가능성이생깁니다. 5 snprintf에 실제buffer size를전달하고 returnvalue가 size이상인지 확인합니다. 6 가능하면 필요한 길이를계산해 동적으로할당하거나 더 안전한stringabstraction을사용합니다. 시험 읽기 순서 등장 주체 또는 입력 → 처리 규칙 → 보안 효과 → 조건과 한계