summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--trans/fakeroot.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/trans/fakeroot.c b/trans/fakeroot.c
index 679e4765..b6938dce 100644
--- a/trans/fakeroot.c
+++ b/trans/fakeroot.c
@@ -307,6 +307,10 @@ netfs_S_dir_lookup (struct protid *diruser,
/* We already know about this node. */
mach_port_deallocate (mach_task_self (), idport);
pthread_mutex_lock (&np->lock);
+ if (retry_name[0] != '\0')
+ /* This was not the last component, remove O_WRITE to
+ avoid opening directories with it. */
+ flags &= ~O_WRITE;
err = check_openmodes (np->nn, (flags & (O_RDWR|O_EXEC)), file);
if (!err)
netfs_nref (np);