diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2005-05-20 19:31:18 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2005-05-20 19:31:18 +0000 |
commit | da56a02f6cbd4717cd465a35b6e7f96c327fdfe0 (patch) | |
tree | 7748dba0c25e278d95e3da33d8ea32fad80c1ad1 | |
parent | 2005-05-20 Sergei Organov <osv@topconrd.ru> (diff) | |
download | rtems-da56a02f6cbd4717cd465a35b6e7f96c327fdfe0.tar.bz2 |
2005-05-20 Sergei Organov <osv@topconrd.ru>
PR 750/networking
* pppd/sys-rtems.c: Avoid NULL dereference in wait_input().
-rw-r--r-- | c/src/libnetworking/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/libnetworking/pppd/sys-rtems.c | 16 |
2 files changed, 17 insertions, 4 deletions
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 <osv@topconrd.ru> + + PR 750/networking + * pppd/sys-rtems.c: Avoid NULL dereference in wait_input(). + 2004-04-03 Wilfried Busalski <w.busalski@lancier-monitoring.de> 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); } /* |