diff options
Diffstat (limited to 'c/src/exec')
-rw-r--r-- | c/src/exec/libcsupport/src/readdir.c | 3 | ||||
-rw-r--r-- | c/src/exec/libcsupport/src/rewinddir.c | 3 | ||||
-rw-r--r-- | c/src/exec/libcsupport/src/seekdir.c | 6 | ||||
-rw-r--r-- | c/src/exec/libcsupport/src/telldir.c | 7 |
4 files changed, 17 insertions, 2 deletions
diff --git a/c/src/exec/libcsupport/src/readdir.c b/c/src/exec/libcsupport/src/readdir.c index 570cacd5de..ec41679511 100644 --- a/c/src/exec/libcsupport/src/readdir.c +++ b/c/src/exec/libcsupport/src/readdir.c @@ -56,6 +56,9 @@ readdir(dirp) register DIR *dirp; { register struct dirent *dp; + if ( !dirp ) + return NULL; + for (;;) { if (dirp->dd_loc == 0) { dirp->dd_size = getdents (dirp->dd_fd, diff --git a/c/src/exec/libcsupport/src/rewinddir.c b/c/src/exec/libcsupport/src/rewinddir.c index cb02fab905..0df578633a 100644 --- a/c/src/exec/libcsupport/src/rewinddir.c +++ b/c/src/exec/libcsupport/src/rewinddir.c @@ -24,6 +24,9 @@ void rewinddir( { off_t status; + if ( !dirp ) + return; + status = lseek( dirp->dd_fd, 0, SEEK_SET ); if( status == -1 ) diff --git a/c/src/exec/libcsupport/src/seekdir.c b/c/src/exec/libcsupport/src/seekdir.c index 374ca7b5aa..5a2f3bb469 100644 --- a/c/src/exec/libcsupport/src/seekdir.c +++ b/c/src/exec/libcsupport/src/seekdir.c @@ -25,12 +25,16 @@ void seekdir( { off_t status; + if ( !dirp ) + return; + status = lseek( dirp->dd_fd, loc, SEEK_SET ); /* * This is not a nice way to error out, but we have no choice here. */ - if( status == -1 ) + + if ( status == -1 ) return; dirp->dd_loc = 0; diff --git a/c/src/exec/libcsupport/src/telldir.c b/c/src/exec/libcsupport/src/telldir.c index cea6cc08cb..765bb4ed44 100644 --- a/c/src/exec/libcsupport/src/telldir.c +++ b/c/src/exec/libcsupport/src/telldir.c @@ -16,6 +16,7 @@ #include <dirent.h> #include <stdlib.h> #include <unistd.h> +#include <errno.h> #include "libio_.h" @@ -26,8 +27,12 @@ long telldir( { rtems_libio_t *iop; + if ( !dirp ) + set_errno_and_return_minus_one( EBADF ); + /* - * Get the file control block structure associated with the file descriptor + * Get the file control block structure associated with the + * file descriptor */ iop = rtems_libio_iop( dirp->dd_fd ); |