diff --git a/c/src/libnetworking/ChangeLog b/c/src/libnetworking/ChangeLog index 3aa837d74c..d472e4ceaf 100644 --- a/c/src/libnetworking/ChangeLog +++ b/c/src/libnetworking/ChangeLog @@ -1,3 +1,8 @@ +2005-05-20 Sergei Organov + + PR 750/networking + * pppd/sys-rtems.c: Avoid NULL dereference in wait_input(). + 2004-04-03 Wilfried Busalski PR 599/pppd diff --git a/c/src/libnetworking/pppd/sys-rtems.c b/c/src/libnetworking/pppd/sys-rtems.c index 0fc3e139b9..d65c50f547 100644 --- a/c/src/libnetworking/pppd/sys-rtems.c +++ b/c/src/libnetworking/pppd/sys-rtems.c @@ -513,13 +513,21 @@ void wait_input(timo) struct timeval *timo; { - rtems_interval ticks; rtems_event_set events; + rtems_interval ticks = 0; + rtems_option wait = RTEMS_WAIT; - ticks = ((timo->tv_sec*1000000)+timo->tv_usec)/rtems_bsdnet_microseconds_per_tick; - if ( ticks > 0 ) { - rtems_event_receive(RTEMS_EVENT_31, (RTEMS_EVENT_ANY|RTEMS_WAIT), ticks, &events); + if(timo) { + if(timo->tv_sec == 0 && timo->tv_usec == 0) + wait = RTEMS_NO_WAIT; + else { + ticks = (timo->tv_sec * 1000000 + timo->tv_usec) / + rtems_bsdnet_microseconds_per_tick; + if(ticks <= 0) + ticks = 1; + } } + rtems_event_receive(RTEMS_EVENT_31, RTEMS_EVENT_ANY | wait, ticks, &events); } /*