티스토리 뷰

Programming/Assembly

[Assembly 2] strncpy

err0rless313 2015. 10. 20. 22:44


src 가 가르키는 문자열을 dest 가 가르키는 배열에 복사한다. src 에서 복사될때 '\0' 까지 복사됨으로 문자열이 겹쳐지지는 않는다. 이때 dest 는 src 를 모두 복사 받을수 있을정도로 충분히 커야 한다.

strcpy() 는 목적지의 배열의 크기가 충분히 크지 않을경우 어떤일이 발생될지 알수가 없다. 운이 좋으면 세그먼트폴트 에러와 함께 죽겠지만, 그렇지 않고 알수 없는 작동을 할수도 있다. 이는 흔히 말하는 버퍼 오버 플로우 크래커 기술에 매우 취약하다. strcpy() 를 쓰기전에는 반드시 복사할 문자열의 크기를 검사해주어야 한다. 또는 strncpy() 를 써야 한다.

strncpy()는 n을 이용해서 복사할 문자열의 크기를 정할 수 있으므로 버퍼 오버 플로우에 좀더 안전하다. 만약 src의 길이가 n 보다 작다면 dest의 남는 공간은null 로 채워진다.

출처 - joinc // http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/strcpy


뭔가 strcpy 만들었으니까 strncpy도 만들어 보고 싶었음. main에서 argv[1]을 가져와서 strncpy로 넣어줌. 오버플로우 날 걱정없고 좋음


https://github.com/err0rless/assembly/blob/master/strncpy.s

'Programming > Assembly' 카테고리의 다른 글

[Assembly 1] write, strlen, exit  (0) 2015.10.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함