From e92bd6e362470aa0a79cfb19a512944f0761184b Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 18 Nov 2016 16:41:00 -0200 Subject: Fix hurd __access_noerrno implementation. This patch fixes some hurd bits from commit afcf3cd8eb that added the __access_noerrno internal symbol. It basically removes the nonrequired __hurd_fail_noerrno (since the 'err' argument is ignored) and fixes a typo for EACCES. However, as stated on maillist [1] this __access_noerrno may still be unsafe to run during initialization of tunables on the Hurd. The access_common calls __hurd_file_name_lookup, which calls __hurd_file_name_lookup_retry, which can set errno. [1] https://sourceware.org/ml/libc-alpha/2016-11/msg00646.html --- sysdeps/mach/hurd/access.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/mach/hurd/access.c b/sysdeps/mach/hurd/access.c index 93e2166..0df939a 100644 --- a/sysdeps/mach/hurd/access.c +++ b/sysdeps/mach/hurd/access.c @@ -31,7 +31,7 @@ hurd_fail_seterrno (error_t err) static int hurd_fail_noerrno (error_t err) { - return __hurd_fail_noerrno (err); + return -1; } static int @@ -149,13 +149,15 @@ access_common (const char *file, int type, int (*errfunc) (error_t)) if (flags & ~allowed) /* We are not allowed all the requested types of access. */ - return errfunc (EACESS); + return errfunc (EACCES); return 0; } /* Test for access to FILE by our real user and group IDs without setting - errno. */ + errno. This may be unsafe to run during initialization of tunables + since access_common calls __hurd_file_name_lookup, which calls + __hurd_file_name_lookup_retry, which can set errno. */ int __access_noerrno (const char *file, int type) { -- cgit v1.1