From afa793ff16b349989ca7c958466eae15d2d003f9 Mon Sep 17 00:00:00 2001 From: Prashanth Pai Date: Tue, 12 May 2015 16:36:55 +0530 Subject: libgfapi: Gracefully exit when glfd is invalid When glfs_* methods operating on glfd are invoked after calling glfs_close(), the program segfaults inside __GLFS_ENTRY_VALIDATE_FD trying to deference glfd->fd->inode which is invalid. Also, returning EBADF seemed more specific than EINVAL. BUG: 1221008 Change-Id: I13a92dca52da9a300252b69e026581b3a9e931fd Signed-off-by: Prashanth Pai Reviewed-on: http://review.gluster.org/10759 Tested-by: Gluster Build System Reviewed-by: Shyamsundar Ranganathan --- api/src/glfs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'api/src/glfs.c') diff --git a/api/src/glfs.c b/api/src/glfs.c index fc392947e1e..490dbde9c1e 100644 --- a/api/src/glfs.c +++ b/api/src/glfs.c @@ -555,8 +555,10 @@ glfs_fd_destroy (struct glfs_fd *glfd) } glfs_unlock (glfd->fs); - if (glfd->fd) - fd_unref (glfd->fd); + if (glfd->fd) { + fd_unref (glfd->fd); + glfd->fd = NULL; + } GF_FREE (glfd->readdirbuf); -- cgit