From a5bdcd9881aa1bf8533b933a96812441ba3b7214 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 20 Apr 2001 13:37:05 +0000 Subject: 2001-04-20 Joel Sherrill * devnull/devnull.c (null_initialize): Added check to ensure that the driver is only initialized once. Otherwise, it will abort when the device /dev/null is present. (null_write): Do not dereference a NULL pointer. --- c/src/libmisc/devnull/devnull.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'c/src/libmisc/devnull') diff --git a/c/src/libmisc/devnull/devnull.c b/c/src/libmisc/devnull/devnull.c index c569fcb2ba..6ea15ea286 100644 --- a/c/src/libmisc/devnull/devnull.c +++ b/c/src/libmisc/devnull/devnull.c @@ -32,6 +32,7 @@ */ rtems_unsigned32 NULL_major; +static initialized; rtems_device_driver null_initialize( rtems_device_major_number major, @@ -39,18 +40,22 @@ rtems_device_driver null_initialize( void *pargp ) { - rtems_device_driver status ; + rtems_device_driver status; - status = rtems_io_register_name( - "/dev/null", - major, - (rtems_device_minor_number) 0 + if ( !initialized ) { + initialized = 1; + + status = rtems_io_register_name( + "/dev/null", + major, + (rtems_device_minor_number) 0 ); - if (status != RTEMS_SUCCESSFUL) - rtems_fatal_error_occurred(status); + if (status != RTEMS_SUCCESSFUL) + rtems_fatal_error_occurred(status); - NULL_major = major; + NULL_major = major; + } return RTEMS_SUCCESSFUL; } @@ -143,9 +148,10 @@ rtems_device_driver null_write( void *pargp ) { - rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) pargp ; + rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) pargp; - rw_args->bytes_moved = rw_args->count ; + if ( rw_args ) + rw_args->bytes_moved = rw_args->count; return NULL_SUCCESSFUL; } -- cgit v1.2.3