From: Andrew Deason Date: Fri, 14 Aug 2009 21:26:16 +0000 (-0500) Subject: Prevent uafs_readdir/closedir segfault X-Git-Tag: openafs-devel-1_5_74~56 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=f7b192364227be1d1db58097d72b049f8ebc0777 Prevent uafs_readdir/closedir segfault Check for the NULL case in uafs_readdir/closedir, so we don't blindly dereference the given pointer. Change-Id: Iaefce9bf2e5135a60e9739f866a1f27333f06e28 Reviewed-on: http://gerrit.openafs.org/1715 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/afs/UKERNEL/afs_usrops.c b/src/afs/UKERNEL/afs_usrops.c index 1480c42..4f1edc3 100644 --- a/src/afs/UKERNEL/afs_usrops.c +++ b/src/afs/UKERNEL/afs_usrops.c @@ -3958,6 +3958,11 @@ uafs_readdir_r(usr_DIR * dirp) struct usr_dirent *direntP; struct min_direct *directP; + if (!dirp) { + errno = EBADF; + return NULL; + } + /* * Make sure this is an open file */ @@ -4045,6 +4050,11 @@ uafs_closedir_r(usr_DIR * dirp) int fd; int rc; + if (!dirp) { + errno = EBADF; + return -1; + } + fd = dirp->dd_fd; afs_osi_Free((char *)dirp, sizeof(usr_DIR) + USR_DIRSIZE + sizeof(struct usr_dirent));