[초보 Linux] gets() function을 사용하는데 경고 메시지가..
글쓴이: mutant / 작성시간: 월, 2004/03/08 - 8:41오후
#include <stdio.h>
#include <stdlib.h>
.....
{
char intext[100];
..
gets(intext);
..
}
]# gcc -o a.out quickrelpy.c
....
:the 'gets' function is dangerous and should not be used.
...
안녕하세요..
위와 같은 메시지가 나오네요..
어떤 문제가 있는 것인가요 ??
아무리 생각해봐도 잘 모르겠습니다...
Linux programming이 아무리 처음이라 해도 VC++로 똑같이 코딩하고
컴파일하면 아무런 문제가 없습니다..
아시는분 답변 부탁드립니다..
감사합니다..
Forums:
그건
gets로 입력받은 문자열이
배열로 선언한길이 보다 길게 되면 딴 메모리영역을 침범해서
버퍼오버플로우가 발생하여 보안상 취약점이 발생할 수 있기
때문에 경고가 뜨는겁니다.
fgets() 를 대신 사용하세요fgets 는 바운드 체크를 해서
fgets() 를 대신 사용하세요
fgets 는 바운드 체크를 해서 안전하답니다
- advanced -
현재 C 표준 함수 중에서 위험성이 높은 것들은 자체적으로 사용하지 말라
현재 C 표준 함수 중에서 위험성이 높은 것들은 자체적으로 사용하지 말라고 경고를 내보냅니다. gets()역시 그 중 하나이지요.
다른 분들이 적은 내용처럼 보다 안전한 다른 함수를 사용하는 것이 좋습니다.
vc++에서는 그러한 제약같은걸 별로 언급하지 않아서 그냥 넘어갑니다.
C++만 해도
이렇게만 해도 바로 마구마구 이상한 메시지 뜨지요. VC++에선 아무말 없구요.
SOrCErEr
감사합니다.
:D
많은 도움이 되었습니다.
댓글 달기