Buffer-Overflows_2 Off-by-one buffer overflow 는 단일 바이트 값이 오버플로우된 경우로 보통 Null 종료 버그 나 libc 함수 사용 시 계산 실수로 인해 발생된다. Adjacent memory overflows 는 Null 종료 버그 를 이용하여 두 문자열을 연결하는 경우로 메모리 상에서 두 버퍼가 나란히 붙어있어 이러한 명칭을 가진다. 예를 들어 Null 종료 버그 로 인해 종료가 제대로 되지 않으면 strlen() 함수와 같이 Null 종료 에 의존적인 함수들이 인접한 메모리를 계속 읽게 된다. Off-by-one buffer overflow 다음은 Off-by-one buffer overflow 의 예시로 메모리 색인 시 Off-by-one buffer overflow 가 발생한다. static int b64_decode( const char * str, unsigned char * space, int size ) { const char * cp; int space_idx, phase; int d, prev_d = 0 ; unsigned char c; space_idx = 0 ; phase = 0 ; for ( cp = str; *cp != '\0' ; ++cp ) { d = b64_decode_table[( int ) *cp]; if ( d != - 1 ) { switch ( phase ) { case 0 : ++phase; break ; case 1 : c = ( ( prev_d << 2 ) |...