diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-08-06 05:22:36 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-08-06 05:22:36 -0400 |
commit | a7ea72a03fc47a3586a14eddb515595727c05f3b (patch) | |
tree | 80037b1c043b74ad949d9f8629933020b01570d1 | |
parent | 9323c5dbf69248ee7baae627c42866353b993784 (diff) | |
download | dbfs-a7ea72a03fc47a3586a14eddb515595727c05f3b.tar.gz |
Implement statfs op. Limit filename component length.
-rw-r--r-- | dbfs-backend.c | 2 | ||||
-rw-r--r-- | dbfs.c | 22 | ||||
-rw-r--r-- | dbfs.h | 2 |
3 files changed, 25 insertions, 1 deletions
diff --git a/dbfs-backend.c b/dbfs-backend.c index 30ef303..6558d1c 100644 --- a/dbfs-backend.c +++ b/dbfs-backend.c @@ -366,6 +366,8 @@ static int dbfs_name_validate(const char *name) return -EINVAL; if (!strcmp(name, "..")) return -EINVAL; + if (strlen(name) > DBFS_FILENAME_MAX) + return -EINVAL; return 0; } @@ -529,6 +529,26 @@ static void dbfs_op_fsyncdir (fuse_req_t req, fuse_ino_t ino, fuse_reply_err(req, 0); } +static void dbfs_op_statfs(fuse_req_t req) +{ + struct statvfs f; + + memset(&f, 0, sizeof(f)); + f.f_bsize = 512; + f.f_frsize = 512; + f.f_blocks = 0xffffffffffff; + f.f_bfree = 0xfffffff; + f.f_bavail = 0xfffffff; + f.f_files = 0xfffffff; + f.f_ffree = 0xffffff; + f.f_favail = 0xffffff; + f.f_fsid = 0xdeadbeef; + f.f_flag = 0; + f.f_namemax = DBFS_FILENAME_MAX; + + fuse_reply_statfs(req, &f); +} + static void dbfs_op_setxattr(fuse_req_t req, fuse_ino_t ino, const char *name, const char *value, size_t size, int flags) @@ -655,7 +675,7 @@ static struct fuse_lowlevel_ops dbfs_ops = { .readdir = dbfs_op_readdir, .releasedir = dbfs_op_releasedir, .fsyncdir = dbfs_op_fsyncdir, - .statfs = NULL, + .statfs = dbfs_op_statfs, .setxattr = dbfs_op_setxattr, .getxattr = dbfs_op_getxattr, .listxattr = dbfs_op_listxattr, @@ -32,6 +32,8 @@ enum { DBFS_DIRENT_ALIGN = 8, /* struct dbfs_dirent alignment */ + DBFS_FILENAME_MAX = 256, /* max filename component size */ + DBFS_XATTR_NAME_LEN = 256, /* extended attr limits */ DBFS_XATTR_MAX_LEN = (1024 * 1024), |