summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Pierre André <jpandre@users.sourceforge.net>2013-05-12 09:58:16 +0200
committerJean-Pierre André <jpandre@users.sourceforge.net>2013-05-12 09:58:16 +0200
commitbdf2af1a7dd2a3a2c0e09e035e538ebadc81ca1c (patch)
treef976bf2aa922063c417793e3f8b10be99d13190b
parentd129232a28be863def908571fde28f4a3a0bb9bf (diff)
downloadillumos-fusefs-bdf2af1a7dd2a3a2c0e09e035e538ebadc81ca1c.tar.gz
Defended against getting a non-fuse type directory
-rw-r--r--kernel/fuse_vnops.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/fuse_vnops.c b/kernel/fuse_vnops.c
index 63e3d11..32c3b12 100644
--- a/kernel/fuse_vnops.c
+++ b/kernel/fuse_vnops.c
@@ -2117,6 +2117,11 @@ static int fuse_lookup(struct vnode *dvp, char *nm, struct vnode **vpp,
* if this is the root of our filesystem, we will check
* for valid access permissions
*/
+ if (!VTOFD(dvp)) {
+ err = EIO; /* does not look like a fuse-type directory */
+ goto out;
+ }
+
if ((VTOFD(dvp))->nodeid == FUSE_ROOT_ID) {
if (err = fuse_access(dvp, VEXEC, flags, credp, ct)) {
DTRACE_PROBE2(fuse_lookup_err_access,