strncpy의 위험성!!!

복사 대상 배열의 사이즈 만큼만 복사를 해서 메모리 침범을 막아주는 안전한 스트링 복사함수인 strncpy... 이것도 잘못 사용하면 큰 낭패를 볼 수 있다는 사실. 

보통 strcpy는 스트링의 마지막에 NULL문자를 반드시 넣어준다. 하지만 strncpy는 반드시 그렇지는 않다. 다음 코드를 보면,

char szTest[21];

strncpy(szTest, "1234567890", sizeof(szTest)); // 이 경우 szTest는 NULL로 종료되는 스트링이다. 그런데...


strncpy(szTest, "123456789012345678901", sizeof(szTest)); 

위의 코드의 경우 szTest는 szTest[20]에 1이 들어가 있어 NULL로 종료되는 스트링이 아니다. 따라서 szTest로 스트링 연산을 했을때 문제가 발생한다. 


 



by sophnim | 2008/06/17 12:23 | 게임 개발 관련 정보 | 트랙백 | 덧글(0)

트랙백 주소 : http://sophnim.egloos.com/tb/1937459
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶