summaryrefslogtreecommitdiff
path: root/trans/fakeroot.c
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2014-05-19 16:46:33 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2014-05-22 07:55:04 +0200
commit353fe33eb2481a14dc324c7c2e52b2032df86465 (patch)
tree637c01a13fcd4700dc6cf31ccbfd66accb214cf9 /trans/fakeroot.c
parente30e04d4f5cef2af6400847b5e102b5877372f27 (diff)
trans/fakeroot: override fshelp_isowner
As of recently, fakeroot would fail to create symlinks: % fakeroot-hurd ln -s foo a ln: failed to create symbolic link ‘a’: Operation not permitted Fix this by overriding fshelp_isowner. Various netfs functions will call fshelp_isowner to check whether USER is allowed to do some operation. As fakeroot is not running within the fakeauth'ed environment, USER contains the real user. I have no explanation why this ever worked. * trans/fakeroot.c (fshelp_isowner): New function.
Diffstat (limited to 'trans/fakeroot.c')
-rw-r--r--trans/fakeroot.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/trans/fakeroot.c b/trans/fakeroot.c
index c4b95de1..4175b552 100644
--- a/trans/fakeroot.c
+++ b/trans/fakeroot.c
@@ -479,6 +479,16 @@ netfs_validate_stat (struct node *np, struct iouser *cred)
return 0;
}
+/* Various netfs functions will call fshelp_isowner to check whether
+ USER is allowed to do some operation. As fakeroot is not running
+ within the fakeauth'ed environment, USER contains the real
+ user. Hence, we override this check. */
+error_t
+fshelp_isowner (struct stat *st, struct iouser *user)
+{
+ return 0;
+}
+
error_t
netfs_attempt_chown (struct iouser *cred, struct node *np,
uid_t uid, uid_t gid)