Run-Time Check Failure #2

  • Post author:
  • Post category:
  • Post comments:2 Comments
  • Post last modified:June 15, 2005

업무인수인계 받은 소프트웨어 중 하나가 말썽이라는 고객사의 전화를 받았습니다. VC++6 로 실행시켜 보니까 별다른 이상을 찾을 수 없었습니다. 그런데 VS.NET VC++로 빌드한 후 실행시키니 다음과 같은 메시지 팝업이 떴습니다.

Run-Time Check Failure – Stack around the variable ‘szTemp’ was corrupted.

VC++ 작업시 보통 VS.NET VC++를 사용하지 않기 때문에 위의 메시지는 처음 봤습니다. 그러나 메시지 내용을 보아하니 Stack Buffer Overflow 문제인 듯 했습니다. (커뮤니티 사이트에서도 Stack Overflow라는 답변을 찾았습니다.)

문제의 원인은 다음과 같았습니다.

ODBC로 테이블 TableA의 데이터를 SELECT 합니다. 이때 MSG 필드는 Varchar(100)으로 설정되어 있습니다. 그런데 해당 필드의 값을 받을 char[]의 크기가 100으로 잡혀 있었습니다. 문자열 마지막에 NULL이 들어가야 하기 때문에 크기를 101로 잡았어야 했습니다.

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
rioklar
rioklar
15 years ago

크기 하나 늘려주니 에러 안나네요~
좋은 정보 감사합니다~

최재훈
15 years ago

해결하셨다니 저도 기쁘군요.