aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-04-01 21:07:35 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2005-04-01 21:07:35 +0000
commit18fce98ceef049fe53bdb48c4fbfaa8bb833f6e6 (patch)
tree66a737ddcd9a1f7a42642b5a377b00340e26f82e /kernel
parent7ff715cf59da48707ae776b235beb25175ff632c (diff)
downloadlibfuse-18fce98ceef049fe53bdb48c4fbfaa8bb833f6e6.tar.gz
fix
Diffstat (limited to 'kernel')
-rw-r--r--kernel/dir.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/dir.c b/kernel/dir.c
index ecd6108..093bbb9 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -506,19 +506,19 @@ static int parse_dirfile(char *buf, size_t nbytes, struct file *file,
struct fuse_dirent *dirent = (struct fuse_dirent *) buf;
size_t reclen = FUSE_DIRENT_SIZE(dirent);
int over;
- if (dirent->namelen > FUSE_NAME_MAX)
+ if (!dirent->namelen || dirent->namelen > FUSE_NAME_MAX)
return -EIO;
if (reclen > nbytes)
break;
over = filldir(dstbuf, dirent->name, dirent->namelen,
- dirent->off, dirent->ino, dirent->type);
+ file->f_pos, dirent->ino, dirent->type);
if (over)
break;
buf += reclen;
- file->f_pos += reclen;
nbytes -= reclen;
+ file->f_pos = dirent->off;
}
return 0;