stack smashing detected 해결점 해주십쇼
글쓴이: adsfasdfafer / 작성시간: 토, 2012/03/17 - 3:43오후
스텍스메싱이 버퍼 오버플로우라고 하던데
/* 제목: BitWise에 관한 예제 작성일: 2012_03_17_Sat. 작성자: OMyungGyo 파일이름: BitWise.c */ #include <stdio.h> #define intSize 32 void Binerary( int n ); int main( void ) { int operand1 = 55; // 00000000 00000000 00000000 00110111 int operand2 = 1250; // 00000000 00000000 00000010 01110010 int temp; Binerary( operand1 ); Binerary( operand2 ); /* AND 연산자를 사용한다 */ printf( "%d \n", operand1 & operand2 ); /* OR 연산자를 사용한다 */ printf( "%d \n", operand1 | operand2 ); /* XOR 연산자를 사용한다 */ printf( "%d \n", (temp = operand1 ^ operand2) ); printf( "%d \n", temp ^ operand2 ); /* 1의 보수 연산자를 사용한다. */ printf( "%d \n", ~operand1 ); return 0; } void Binerary( int n ) { char binArr[intSize-1]; int cnt = 0; while( cnt < intSize ) { binArr[intSize-1-cnt++] = n - (n>>1)*2; n = n>>1; } cnt = 0; while( cnt < intSize) { printf( "%d", binArr[cnt++] ); if( (cnt+1) % 8 == 0 ) putchar( ' ' ); } }
에서 어디서 오버플로우가 발생하는지 모르겟네요
짤은 사이프리드 뿌잉
File attachments:
첨부 | 파일 크기 |
---|---|
_사이프리드8.jpg | 94.05 KB |
Forums:
음 ..
두번째 while loop 의 printf( "%d", binArr[cnt++] ); 에서 cnt 가 binArr 의 array size 를 넘어섰네요.
cnt 를 binArr 의 index 로 쓰시려거든, while loop 의 조건을 cnt < sizeof(binArr) 로 쓰는게 안전할 것 같네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기