aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-04-24 05:51:47 -0400
committerJeff Garzik <jeff@garzik.org>2006-04-24 05:51:47 -0400
commitec189c6a73fd6794c9297b8f4beefb0ae260e8bd (patch)
treea4ed60cdf61f73463650a53bb1b92a0e85a014c4
parent3b9aa7f2731cf670518f5583ceede474715a39f2 (diff)
downloaddbfs-ec189c6a73fd6794c9297b8f4beefb0ae260e8bd.tar.gz
dbfs: Don't permit root inode unlink; increase getattr attr timeout.
-rw-r--r--dbfs-backend.c5
-rw-r--r--dbfs.c2
-rw-r--r--dbfs.h2
3 files changed, 8 insertions, 1 deletions
diff --git a/dbfs-backend.c b/dbfs-backend.c
index e051c75..aeffa16 100644
--- a/dbfs-backend.c
+++ b/dbfs-backend.c
@@ -361,6 +361,11 @@ int dbfs_unlink(guint64 parent, const char *name, unsigned long flags)
if (rc)
goto out;
+ if (ino_n == DBFS_ROOT_INO) {
+ rc = -EINVAL;
+ goto out;
+ }
+
rc = dbfs_inode_read(ino_n, &ino);
if (rc)
goto out;
diff --git a/dbfs.c b/dbfs.c
index 3a2d2e4..1758737 100644
--- a/dbfs.c
+++ b/dbfs.c
@@ -41,7 +41,7 @@ static void dbfs_op_getattr(fuse_req_t req, fuse_ino_t ino_n,
st.st_mtime = GUINT64_FROM_LE(ino->raw_inode->mtime);
st.st_ctime = GUINT64_FROM_LE(ino->raw_inode->ctime);
- fuse_reply_attr(req, &st, 1.0);
+ fuse_reply_attr(req, &st, 2.0);
dbfs_inode_free(ino);
}
diff --git a/dbfs.h b/dbfs.h
index 4b37289..030acb5 100644
--- a/dbfs.h
+++ b/dbfs.h
@@ -5,6 +5,8 @@ enum {
DBFS_BLK_ID_LEN = 20,
DBFS_UNLINK_DIR = (1 << 0),
+
+ DBFS_ROOT_INO = 1,
};
enum {