summaryrefslogtreecommitdiff
path: root/trans
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 /trans
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.
Diffstat (limited to 'trans')
-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;
}