입력값(정수)에 대하여 최대한도를 넘었는지 여부를 검사할 방법
글쓴이: guru245 / 작성시간: 금, 2003/10/03 - 1:04오후
어떤 함수에 들어오는 입력값(정수)에 대하여 최대한도를 넘으면 에러처리를 하고 싶습니다.
예를들면
void add(unsigned long number);란 함수가 있다고 치죠.
그렇다면 number의 최대값은 limits.h에 의거하여 ULONG_MAX입니다.
number에는 0부터 ULONG_MAX까지의 값만 들어오도록 하고 싶습니다.
그러나 ULONG_MAX보다 큰값 즉 ULONG_MAX +1은 0이 잖습니까?
ULONG_MAX + 2 는 1이 되겠고요.
이 함수를 호출하는 사용자가 ULONG_MAX보다 큰값을 입력으로 호출한다면
결국 ULONG_MAX보다 작은 값이 되어서 저의 에러처리를 비껴나가게 됩니다.
이에 관한 좋은 해결책이 없을까요?
Forums:
제가 알기로는 없는 것으로 알고 있습니다.그래서 phrack지에 in
제가 알기로는 없는 것으로 알고 있습니다.
그래서 phrack지에 integer overflow라는 글을 보면 그것을 알아낼 방법이 없기 때문에 더욱 위험하다 라고 표현되어 있더군요.
문자열로 읽어서 체크하시거나Long 이상의 정수를 다룰 수 있게 도와
문자열로 읽어서 체크하시거나
Long 이상의 정수를 다룰 수 있게 도와주는
라이브러리를 사용하시는수밖에 -_-;
댓글 달기