버퍼 오버플로우란 프로세스가 데이터를 버퍼에 저장할 때 개발자가 지정한 곳 밖에 저장하여, 범위 밖의 데이터가 인접 메모리를 overwrite함으로써 오류가 발생하는 현상을 말한다. 여기서 버퍼란, 일시적으로 데이터를 보관하는 메모리의 영역이다. 대표적으로 버퍼 오버플로우를 일으키는 원인을 제공할 수 있는 함수가 하나 있다. 바로 gets()이다. 아래는 gets()의 원형코드이다. char *gets(char *dest){ int c = getchar(); char *p = dest;----------(1) while(c != EOF && c != '\n'){ *p++ = c; c = getchar(); } *p = '0'; return dest; } 코드라인 (1)에 따라 gets()는 버퍼의 시작주..