diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-11-18 16:41:00 -0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-11-18 16:49:08 -0200 |
commit | e92bd6e362470aa0a79cfb19a512944f0761184b (patch) | |
tree | c890d3d7f2a9680c4f9d6ac9d9b7f1e7b7328784 /sysdeps/mach | |
parent | c73c7fc07c001f2a907a9c6d50c57d377ce0351f (diff) | |
download | glibc-e92bd6e362470aa0a79cfb19a512944f0761184b.tar glibc-e92bd6e362470aa0a79cfb19a512944f0761184b.tar.gz glibc-e92bd6e362470aa0a79cfb19a512944f0761184b.tar.bz2 glibc-e92bd6e362470aa0a79cfb19a512944f0761184b.zip |
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
Diffstat (limited to 'sysdeps/mach')
-rw-r--r-- | sysdeps/mach/hurd/access.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sysdeps/mach/hurd/access.c b/sysdeps/mach/hurd/access.c index 93e21666f8..0df939a64c 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) { |