Better handled integer overflow in isc_time_secondsastimet function
Adam Tkac
atkac at redhat.com
Mon Jul 16 14:23:50 UTC 2007
Michael Graff napsal(a):
>
> I would rather have the callers of this function know that the value
> cannot fit and decide what to do than to make it return INT_MAX. I
> think the error is actually that we don't correctly check for range
> issues when this function is called. This is because some things which
> mean "wait forever" really want to "wait for a very long time" while
> others might want to use 0 there to mean "wait forever."
>
> In the case of isc_cond_waituntil(), it should probably call
> pthread_cond_wait() instead of pthread_cond_waituntil() with a very
> large value. For all practical purposes, though, MAX_INT seconds is
> "forever" in this context. I know if host doesn't return in 68 years
> it's unlikely I'd keep on waiting for it.
>
> explorer at not:~/proj/ISC/bind9-mainline> ./bin/dig/host -w isc.org
> isc.org has address 204.152.184.88
> isc.org has IPv6 address 2001:4f8:0:2::d
> isc.org mail is handled by 15 mx.sth1.isc.org.
> isc.org mail is handled by 10 mx.isc.org.
>
> - --Michael
>
Sounds fine. But I think isc_time_secondsastimet could return
ISC_R_RANGE and set time_t to maximum (or minimum if this situation
occurs) possible value. This could avoid statements like
if (result == ISC_R_RANGE)
time_t = maxval;
if (result == ISC_R_SUCCESS)
and simple
if ( (res == ISC_R_RANGE) || (res == ISC_R_SUCCESS) ) ...
Adam
More information about the bind-workers
mailing list