로딩
요청 처리 중입니다...

쉬운 카나리 릭

 쉬운 카나리 릭

실제로 scanf 입력에서는 enter값 위치에 00 값으로 대치한다. fgets도 입력한 값 다음에 00값을 넣는다. scanf는 aa\x0a -> aa\x00 fgets는 aa\x0a -> aa\x0a\x00 fgets(buf,10,stdin)는 a*10 -> 'a'*9+"\x00"로 처리한다. 이런 말을 하는 이유는, 아래에 설명할 메모리 릭은 \x00 처리를 해주지 않는 read 함수라는 예를 통해 일어나기 때문이다. ----------------------- Source ----------------------- #include #include int main(int argc, char **argv) { setvbuf (stdout , NULL, _IOLBF, 0); char buf[8]; printf("Name : "); read(0,buf,sizeof(buf)+1); printf("%s\n",buf); read(0,buf,512); ...

원문 링크 : 쉬운 카나리 릭