Re: fatal: Could not get current working directory: Permission denied | affected 2.10,2.11,2.12, but not 1.9.5 |
- From
René Scharfe <l.s.r@web.de>
- Date
- Mar 21, 2017, 19:04 UTC
- Message-ID
- <3e8b756c-81bd-0a29-e032-d5733a8b3ed0@web.de>
- In-Reply-To
- <bcrjmkhdzucyoncxqruj@gkuh>
Am 21.03.2017 um 14:29 schrieb Zenobiusz Kunegunda:
Show 10 quoted lines
> I think I found a way to reproduce this error. > I installed FreeBSD 10.3 under qemu with zfs partitioning. > Test program did not report any access errors. > Then I did chmod 711 /usr/home > Now program started reporting permission denied errors just like this: > $ ./a.out > len = 0, errno = 22, Invalid argument > len = 1, errno = 34, Result too large > len = 2, errno = 13, Permission denied > len = 20, errno = 0, No error: 0
Yes, and I think we can take ZFS out of the equation. As a regular user I get this with UFS and for $mode values of 000, 100 or 400 (with umask 0022):
$ mkdir -p /tmp/a/b && cd /tmp/a/b
$ chmod $mode /tmp/a && getcwdtest len = 0, errno = 22, Invalid argument len = 1, errno = 34, Result too large len = 2, errno = 13, Permission denied len = 9, errno = 0, No error: 0
Only with both read and execute/search permissions for the intermediate directory I get rid of that irritating permission error for small buffers:
$ chmod 500 /tmp/a && getcwdtest len = 0, errno = 22, Invalid argument len = 1, errno = 34, Result too large len = 9, errno = 0, No error: 0
So a workaround for you would be to run "chmod a+rx" (or similar) against all parent directories of your repository. Another one would be to keep the path length below 128 characters (that's the initial buffer size in strbuf_getcwd()).
Have you been able to test the patch I sent on Friday by any chance?
Thanks, René