summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2005-05-20 19:31:18 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2005-05-20 19:31:18 +0000
commitda56a02f6cbd4717cd465a35b6e7f96c327fdfe0 (patch)
tree7748dba0c25e278d95e3da33d8ea32fad80c1ad1
parent2005-05-20 Sergei Organov <osv@topconrd.ru> (diff)
downloadrtems-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/ChangeLog5
-rw-r--r--c/src/libnetworking/pppd/sys-rtems.c16
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);
}
/*