반응형
출처: http://andyader.blogspot.kr/2014/03/gets.html
알고리즘 예제를 쳐서 확인해볼려고 하는데 gets 함수를 사용하고 GCC로 컴파일하려니
경고가 뜨면서 이 함수를 사용하지 말라고 하더라.
그래서 검색하다보니 위의 출처에서 도달하였고
결론은 '버퍼 오버플로우가 생길 수 있으니 사용하지 마라'였다.
즉 받는 쪽은 그 한도가 정해져 있는데 보내는 쪽에서 그 한도 이상을 보낼 수 있고
곧 버퍼 오버플로우가 생길 수 있다는 원인이었다.
처음에 strcpy 함수를 VC에서 사용할려고 했을 떄도 경고가 뜨면서
strcpy_s 같은 문자열 크기를 명시할 수 있는 함수를 사용하라고 했었고,
회사에 있을 때도 이런 내용을 환기시키는 메일을 받기도 했다.
그 떄는 그런가보다 하고 넘어갔지만, 조금씩 머리에 지식이 쌓이다보니
조금 더 쉽게 이해가 간다.
저 블로그에 너무 설명을 잘 해놓아서인지 왜 저 API를 만들 당시엔
저런 문제를 생각하지 않았을까 하는 생각도 들지만, 원래 자기가 만든 것의 실수는 잘 안 보이니까.
그나저나 저걸로 웜 바이러스 만들어서 저렇게나 큰 피해를 입혔다는 것은 처음들었다.
저게 얼마나 충격적이였는지 영문 위키피디아의 위 항목에 들어가보니
웜 바이러스 소스 코드가 든 디스켓을 박물관에서 보관하고 있다.
바이러스를 만든 사람은 뭐 돈하고 봉사 시간을 받았다고 되어 있으나
지금은 으레 해커들이 그렇듯 잘 살고 있는 것으로 보인다.
반응형