diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2015-08-14 15:19:53 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2015-08-14 15:21:41 +0200 |
commit | 68af46b57f817f84cf12bdacc32a1878e1c0fafa (patch) | |
tree | 37614d9fe78a03835fde523894de77a319a73ce7 /trans | |
parent | 8b14af6546d542878a8ea6ca08e49e0cba2e34ef (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.c | 6 |
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; } |