[PATCH] 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 <miklos@szeredi.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
909021ea7a
commit
ee4e52719c
@ -96,6 +96,8 @@ static int fuse_lookup_iget(struct inode *dir, struct dentry *entry,
|
|||||||
fuse_lookup_init(req, dir, entry, &outarg);
|
fuse_lookup_init(req, dir, entry, &outarg);
|
||||||
request_send(fc, req);
|
request_send(fc, req);
|
||||||
err = req->out.h.error;
|
err = req->out.h.error;
|
||||||
|
if (!err && (!outarg.nodeid || outarg.nodeid == FUSE_ROOT_ID))
|
||||||
|
err = -EIO;
|
||||||
if (!err) {
|
if (!err) {
|
||||||
inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
|
inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
|
||||||
&outarg.attr);
|
&outarg.attr);
|
||||||
@ -152,6 +154,10 @@ static int create_new_entry(struct fuse_conn *fc, struct fuse_req *req,
|
|||||||
fuse_put_request(fc, req);
|
fuse_put_request(fc, req);
|
||||||
return err;
|
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,
|
inode = fuse_iget(dir->i_sb, outarg.nodeid, outarg.generation,
|
||||||
&outarg.attr);
|
&outarg.attr);
|
||||||
if (!inode) {
|
if (!inode) {
|
||||||
|
Loading…
Reference in New Issue
Block a user