summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2015-08-14 15:19:53 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2015-08-14 15:21:41 +0200
commit68af46b57f817f84cf12bdacc32a1878e1c0fafa (patch)
tree37614d9fe78a03835fde523894de77a319a73ce7
parent8b14af6546d542878a8ea6ca08e49e0cba2e34ef (diff)
Fake full file access only for faked nodes
Otherwise some scripts may try to modify system files just because they find they seem to be able to. * trans/fakeroot.c (netfs_report_access): When FAKE_MODE is not set on `np', call file_check_access on the underlying node instead of returning O_RDWR|O_EXEC.
-rw-r--r--trans/fakeroot.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/trans/fakeroot.c b/trans/fakeroot.c
index 3c84ce70..76fc9010 100644
--- a/trans/fakeroot.c
+++ b/trans/fakeroot.c
@@ -780,7 +780,11 @@ netfs_attempt_write (struct iouser *cred, struct node *np,
error_t
netfs_report_access (struct iouser *cred, struct node *np, int *types)
{
- *types = O_RDWR|O_EXEC;
+ struct netnode *nn = netfs_node_netnode (np);
+ if (!(nn->faked & FAKE_MODE))
+ return file_check_access (nn->file, types);
+ else
+ *types = O_RDWR|O_EXEC;
return 0;
}