C Programming

strcmp 사용 시 buffer overflow 가능성?

그림아 2016. 2. 16. 00:10

strcpy의 경우 buffer overflow 가능성 문제 (null termination이 제대로 되어있지 않은경우 buffer를 엄청나게 복사할 수 있는 취약점)

를 회피하기 위해, null을 강제삽입하고 strncpy를 쓰거나, snprintf등을 사용하도록 가이드되곤 한다.


그런데, strcmp의 경우에도 overflow가 발생할 수 있을까 궁금해졌다.

strcmp의 경우 문자열을 비교하게 되는데, 메모리에 써주는 것이 아닌 단순 비교만 하는 경우에도 overflow가 발생할 수 있는지,

그리고 만일 발생한다면 어떻게 해결할 수 있는지가 궁금해졌다.


먼저 구글링을 통해 다음과 같은 토론이 존재함을 알수있었다.

http://stackoverflow.com/questions/24353504/whats-wrong-with-strcmp


토론 내용을 요약해보면,

strncmp가 좀더 낫고, memcmp가 가장 낫다고 한다.