0으로 나누기

0으로 나누기

설명

외부 입력을 정수 나눗셈의 분모로 쓰면서 0 여부를 확인하지 않으면 정의되지 않은 동작이 발생하며, 프로그램이 중단될 수 있습니다.

잠재적 영향

  • 프로세스 중단이나 반복되는 요청 실패로 서비스 거부가 발생할 수 있습니다.

해결 방법

나눗셈 전에 분모가 0이 아니며 허용 범위 안에 있는지 확인하세요. 숫자 입력의 형식과 변환 오류도 확인하세요.

예시

변경 전

c
int divisor = atoi(argv[1]);
int result = 100 / divisor;

변경 후

c
int divisor = atoi(argv[1]);
if (divisor == 0) { return; }
int result = 100 / divisor;

설명:

  • 변경 전: 사용자 입력을 분모로 사용하지만 0 검사가 없습니다.
  • 변경 후: 0 값을 거부한 뒤에만 나눗셈을 수행합니다. 이 발췌는 0 검사만 비교합니다. 실제 입력 처리에서는 인자 존재 여부를 확인하고, atoi 대신 오류와 범위를 확인할 수 있는 strtol 등의 변환을 사용하세요.

참조