diff --git a/ChangeLog b/ChangeLog index 3b92342..adbeef3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 0.7.2 ===== + 07-Jan-2009: - fixed some senseless range checks on "Max-Forward" + and "Expires" headers (Thank you Alex for telling me) 08-Nov-2008: - check & define if SOL_IP not existing (some *BSDs) - honor PTHREAD_LDFLAGS from environment 01-Aug-2008: - SIP DSCP value configurable diff --git a/src/proxy.c b/src/proxy.c index 9d37b91..eab1ba1 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -266,8 +266,8 @@ sts=sip_obscure_callid(ticket); } else { if (max_forwards->hvalue) { forwards_count = atoi(max_forwards->hvalue); - if ((forwards_count<=0)|| - (forwards_count>=LONG_MAX)) forwards_count=DEFAULT_MAXFWD; + if ((forwards_count<0)|| + (forwards_count>255)) forwards_count=DEFAULT_MAXFWD; forwards_count -=1; osip_free (max_forwards->hvalue); } diff --git a/src/register.c b/src/register.c index 72c853c..f2297a7 100644 --- a/src/register.c +++ b/src/register.c @@ -293,12 +293,12 @@ int register_client(sip_ticket_t *ticket, int force_lcl_masq) { if (expires_param && expires_param->gvalue) { /* get expires from contact Header */ expires=atoi(expires_param->gvalue); - if ((expires < 0) || (expires >= LONG_MAX)) + if ((expires < 0) || (expires >= ((2**32)-1) )) expires=configuration.default_expires; } else if (expires_hdr && expires_hdr->hvalue) { /* get expires from expires Header */ expires=atoi(expires_hdr->hvalue); - if ((expires < 0) || (expires >= LONG_MAX)) + if ((expires < 0) || (expires >= ((2**32)-1) )) expires=configuration.default_expires; } else { char tmp[16]; @@ -665,12 +665,12 @@ int register_set_expire(sip_ticket_t *ticket) { if (expires_param && expires_param->gvalue) { /* get expires from contact Header */ expires=atoi(expires_param->gvalue); - if ((expires < 0) || (expires >= LONG_MAX)) + if ((expires < 0) || (expires >= ((2**32)-1) )) expires=configuration.default_expires; } else if (expires_hdr && expires_hdr->hvalue) { /* get expires from expires Header */ expires=atoi(expires_hdr->hvalue); - if ((expires < 0) || (expires >= LONG_MAX)) + if ((expires < 0) || (expires >= ((2**32)-1) )) expires=configuration.default_expires; } diff --git a/src/siproxd.c b/src/siproxd.c index 9fbcf81..a72f032 100644 --- a/src/siproxd.c +++ b/src/siproxd.c @@ -455,8 +455,8 @@ int main (int argc, char *argv[]) osip_message_get_max_forwards(ticket.sipmsg, 0, &max_forwards); if (max_forwards && max_forwards->hvalue) { forwards_count = atoi(max_forwards->hvalue); - if ((forwards_count<=0)|| - (forwards_count>=LONG_MAX)) forwards_count=DEFAULT_MAXFWD; + if ((forwards_count<0)|| + (forwards_count>255)) forwards_count=DEFAULT_MAXFWD; } DEBUGC(DBCLASS_PROXY,"checking Max-Forwards (=%i)",forwards_count);