diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2025-03-04 15:13:41 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2025-03-21 15:46:48 -0300 |
commit | 1894e219dc530d7074085e95ffe3c1e66cebc072 (patch) | |
tree | 38f725283bca1b4e545d25f0fbff8308e737979b /sysdeps/generic/min-eloop-threshold.h | |
parent | 855561a1fbc601aa6c373c8a036d472cb52786e7 (diff) | |
download | glibc-1894e219dc530d7074085e95ffe3c1e66cebc072.zip glibc-1894e219dc530d7074085e95ffe3c1e66cebc072.tar.gz glibc-1894e219dc530d7074085e95ffe3c1e66cebc072.tar.bz2 |
Remove eloop-threshold.h
On both Linux and Hurd the __eloop_threshold() is always a constant
(40 and 32 respectively), so there is no need to always call
__sysconf (_SC_SYMLOOP_MAX) for Linux case (!SYMLOOP_MAX). To avoid
a name clash with gnulib, rename the new file min-eloop-threshold.h.
Checked on x86_64-linux-gnu and with a build for x86_64-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
Diffstat (limited to 'sysdeps/generic/min-eloop-threshold.h')
-rw-r--r-- | sysdeps/generic/min-eloop-threshold.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sysdeps/generic/min-eloop-threshold.h b/sysdeps/generic/min-eloop-threshold.h new file mode 100644 index 0000000..2ac12ed --- /dev/null +++ b/sysdeps/generic/min-eloop-threshold.h @@ -0,0 +1,42 @@ +/* Minimum threshold at which to diagnose ELOOP. Generic version. + Copyright (C) 2012-2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#ifndef _MIN_ELOOP_THRESHOLD_H +#define _MIN_ELOOP_THRESHOLD_H 1 + +/* POSIX specifies SYMLOOP_MAX as the "Maximum number of symbolic + links that can be reliably traversed in the resolution of a + pathname in the absence of a loop." This makes it a minimum that + we should certainly accept. But it leaves open the possibility + that more might sometimes work--just not "reliably". + + For example, Linux implements a complex policy whereby there is a + small limit on the number of direct symlink traversals (a symlink + to a symlink to a symlink), but larger limit on the total number of + symlink traversals overall. Hence the SYMLOOP_MAX number should be + the small one, but the limit library functions enforce on users + should be the larger one. + + This constant should be large enough that it never rules out a file + name and directory tree that the underlying system (i.e. calls to 'open' + et al) would resolve successfully. It should be small enough that + actual loops are detected without a huge number of iterations. */ + +#define MIN_ELOOP_THRESHOLD 40 + +#endif |