From bdf2af1a7dd2a3a2c0e09e035e538ebadc81ca1c Mon Sep 17 00:00:00 2001 From: Jean-Pierre André Date: Sun, 12 May 2013 09:58:16 +0200 Subject: Defended against getting a non-fuse type directory --- kernel/fuse_vnops.c | 5 +++++ 1 file changed, 5 insertions(+) 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, -- cgit v1.2.3