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:
| 첨부 | 파일 크기 |
|---|---|
| 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 』
댓글 달기