달력

12

« 2019/12 »

  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

정수형의 언더플로우 & 오버플로우

   

   

강의내용

   

   

   

   

소스코드

#include <stdio.h>

int main(void) {

char num1=-129; // 최소값보다 -1만큼 작은 저장(언더플로우)

char num2=128; // 최대값보다 +1만큼 저장(오버플로우)

printf("%d \n", num1); // 127 출력

printf("%d \n", num2); // -128출력

num1=-130; // 최소값(-128)보다 -2만큼 작은 저장(언더플로우)

num2=129; // 최댜값(127)보다 +2만큼 저장(오버플로우)

printf("%d \n", num1); // 126 출력

printf("%d \n", num2); // -127출력

return 0;

}

   


   

 

출력내용

 

Posted by codedragon codedragon

댓글을 달아 주세요

   

 

정수형의 오버플로우 & 언더플로우

정수형의 오버플로우와 언더플로우는 순환된 값을 출력합니다.

프로그래밍 언어가 자료유형에 대해 엄격한 언어가 아닌 경우 오버플로우가 일어나도 오류가 발생하지 않고, 현재 형이 수용할 수 있는 형태로 바뀌게 됩니다. 간혹, 경고를 발생하여 주는 경우도 있습니다.

 

 

   

오버플로우

자료형에 저장할 수 있는 최대 범위보다 큰 수 저장

   

char c=128;

최대값에서 +1만큼 오버플로우가 발생

   

언더플로우

자료형에 저장할 수 있는 최소 범위보다 작은 수 저장

   

char c=-129

최소값에서 -1만큼 언더플로우가 발생

Posted by codedragon codedragon

댓글을 달아 주세요

   

보안 입출력 라이브러리

   

버퍼 오버플로우의 가장 좋은 보안 대책

  • 개발자 자신의 프로그래밍 습관 변화
  • 적용하는 문제에 적합한 라이브러리 구축
  • 버퍼 오버플로우관련 보안 라이브러리 사용: Libsafe

   

Libsafe

입출력 함수에 보안성을 부여할 수 있는 대표적인 라이브러리

현재 없어짐

http://www.research.avayalabs.com/project/libsafe

   

사용법

$ tar zxvf libsafe-2.0-16.tgz

cd libsafe-2.0-16

make

su

make install

   

직접다운로드

ver.2.0-16(2002년)

libsafe-2.0-16.tgz

Posted by codedragon codedragon

댓글을 달아 주세요