summaryrefslogtreecommitdiffstats
path: root/api/src/glfs-internal.h
diff options
context:
space:
mode:
authorPrashanth Pai <ppai@redhat.com>2015-05-12 16:36:55 +0530
committerShyamsundar Ranganathan <srangana@redhat.com>2015-07-07 08:06:43 -0700
commitafa793ff16b349989ca7c958466eae15d2d003f9 (patch)
treefcd88a57791a0fb238ea216be9c065efc229ec80 /api/src/glfs-internal.h
parentb1abcf61d927009dfd794316b02d683d0e6d32cc (diff)
downloadglusterfs-afa793ff16b349989ca7c958466eae15d2d003f9.tar.gz
glusterfs-afa793ff16b349989ca7c958466eae15d2d003f9.tar.xz
glusterfs-afa793ff16b349989ca7c958466eae15d2d003f9.zip
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 <ppai@redhat.com> Reviewed-on: http://review.gluster.org/10759 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
Diffstat (limited to 'api/src/glfs-internal.h')
-rw-r--r--api/src/glfs-internal.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/api/src/glfs-internal.h b/api/src/glfs-internal.h
index 3f8ac92ac7..ff8ace9cbb 100644
--- a/api/src/glfs-internal.h
+++ b/api/src/glfs-internal.h
@@ -268,8 +268,8 @@ do { \
#define __GLFS_ENTRY_VALIDATE_FD(glfd, label) \
do { \
- if (!glfd) { \
- errno = EINVAL; \
+ if (!glfd || !glfd->fd || !glfd->fd->inode) { \
+ errno = EBADF; \
goto label; \
} \
old_THIS = THIS; \