일부 오래된 코드에서 정적 분석 도구를 실행하기로 결정했는데 sprintf를 사용하고있는 곳이 많습니다. 이 도구는 sprintf가 버퍼 오버 플로우에 대한 경계 검사를 수행하지 않기 때문에 호출을 vsnprintf 또는 snprintf로 바꾸는 것이 좋습니다.snprintf 또는 vsnprintf가 더 좋으며 어떻게 안전하게 사용할 수 있습니까?
난 쉽게 그냥 발견을하고 호출에 교체 대신 현재 snprintf 또는 vsnprintf을 사용할 수 있도록,하지만 난 안전 기능을하기 위해 수행해야 할 다른 아무것도 확인 할 수 있습니다
경우에 따라 사용되는 문자열은 사용자 입력에서 비롯되며 경우에 따라 그렇지 않습니다.
누구나 올바르게 수행하는 방법에 대한 조언이 있습니까?
"snprintf 또는 vsnprintf가 더 나은지 여부"는 가변 인수 또는 'va_list'여부에 따라 다릅니다. –
이식성이 문제가됩니까? – robert
휴대성에 대해서는 걱정하지 않습니다. – petFoo