2005-09-23 14:19:05

by Miklos Szeredi

[permalink] [raw]
Subject: [PATCH 2/3] fuse: check reserved node ID values

This patch checks reserved node ID values returned by lookup and
creation operations. In case one of the reserved values is sent,
return -EIO.

Signed-off-by: Miklos Szeredi <[email protected]>

Index: linux/fs/fuse/dir.c
===================================================================
--- linux.orig/fs/fuse/dir.c 2005-09-23 14:58:09.000000000 +0200
+++ linux/fs/fuse/dir.c 2005-09-23 15:22:37.000000000 +0200
@@ -96,6 +96,8 @@ static int fuse_lookup_iget(struct inode
fuse_lookup_init(req, dir, entry, &outarg);
request_send(fc, req);
err = req->out.h.error;
+ if (!err && (!outarg.nodeid || outarg.nodeid == FUSE_ROOT_ID))
+ err = -EIO;
if (!err) {
inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
&outarg.attr);
@@ -152,6 +154,10 @@ static int create_new_entry(struct fuse_
fuse_put_request(fc, req);
return err;
}
+ if (!outarg.nodeid || outarg.nodeid == FUSE_ROOT_ID) {
+ fuse_put_request(fc, req);
+ return -EIO;
+ }
inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
&outarg.attr);
if (!inode) {