Commit Graph

65 Commits

Author SHA1 Message Date
DJ Delorie
d2e929a907 nsswitch: handle missing actions properly
Some internal functions need to know if a database has a nonzero
list of actions; success getting the database does not guarantee
that.  Add checks for such as needed.

Skip the ":" in each nsswitch.conf line so as not to add a dummy
action libnss_:.so

See also https://bugzilla.redhat.com/show_bug.cgi?id=1906066

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-12-14 12:19:43 -05:00
DJ Delorie
f4f3b09111 nsswitch: use new internal API (callers)
Stitch new ABI and types throughout all NSS callers.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-12-04 17:16:32 -05:00
Petr Vorel
ae7a94e5e3 Remove --enable-obsolete-nsl configure flag
this means that *always* libnsl is only built as shared library for
backward compatibility and the NSS modules libnss_nis and libnss_nisplus
are not built at all, libnsl's headers aren't installed.

This compatibility is kept only for architectures and ABIs that have
been added in or before version 2.28.

Replacement implementations based on TIRPC, which additionally support
IPv6, are available from <https://github.com/thkukuk/>.

This change does not affect libnss_compat which does not depended
on libnsl since 2.27 and thus can be used without NIS.

libnsl code depends on Sun RPC, e.g. on --enable-obsolete-rpc (installed
libnsl headers use installed Sun RPC headers), which will be removed in
the following commit.
2020-07-08 17:25:57 +02:00
Joseph Myers
d614a75396 Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Paul Eggert
5a82c74822 Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:

sed -ri '
  s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
  s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
  $(find $(git ls-files) -prune -type f \
      ! -name '*.po' \
      ! -name 'ChangeLog*' \
      ! -path COPYING ! -path COPYING.LIB \
      ! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
      ! -path manual/texinfo.tex ! -path scripts/config.guess \
      ! -path scripts/config.sub ! -path scripts/install-sh \
      ! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
      ! -path INSTALL ! -path  locale/programs/charmap-kw.h \
      ! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
      ! '(' -name configure \
            -execdir test -f configure.ac -o -f configure.in ';' ')' \
      ! '(' -name preconfigure \
            -execdir test -f preconfigure.ac ';' ')' \
      -print)

and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:

  chmod a+x sysdeps/unix/sysv/linux/riscv/configure
  # Omit irrelevant whitespace and comment-only changes,
  # perhaps from a slightly-different Autoconf version.
  git checkout -f \
    sysdeps/csky/configure \
    sysdeps/hppa/configure \
    sysdeps/riscv/configure \
    sysdeps/unix/sysv/linux/csky/configure
  # Omit changes that caused a pre-commit check to fail like this:
  # remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
  git checkout -f \
    sysdeps/powerpc/powerpc64/ppc-mcount.S \
    sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
  # Omit change that caused a pre-commit check to fail like this:
  # remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
  git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 02:43:31 -07:00
Florian Weimer
a9368c34d7 nss: Turn __nss_database_lookup into a compatibility symbol
The function uses the internal service_user type, so it is not
really usable from the outside of glibc.  Rename the function
to __nss_database_lookup2 for internal use, and change
__nss_database_lookup to always indicate failure to the caller.

__nss_next already was a compatibility symbol.  The new
implementation always fails and no longer calls __nss_next2.

unscd, the alternative nscd implementation, does not use
__nss_database_lookup, so it is not affected by this change.
2019-05-15 15:07:49 +02:00
Joseph Myers
04277e02d7 Update copyright dates with scripts/update-copyrights.
* All files with FSF copyright notices: Update copyright dates
	using scripts/update-copyrights.
	* locale/programs/charmap-kw.h: Regenerated.
	* locale/programs/locfile-kw.h: Likewise.
2019-01-01 00:11:28 +00:00
Paul Pluzhnikov
a6e8926f8d [BZ #20271] Add newlines in __libc_fatal calls. 2018-08-31 18:04:32 -07:00
Joseph Myers
688903eb3e Update copyright dates with scripts/update-copyrights.
* All files with FSF copyright notices: Update copyright dates
	using scripts/update-copyrights.
	* locale/programs/charmap-kw.h: Regenerated.
	* locale/programs/locfile-kw.h: Likewise.
2018-01-01 00:32:25 +00:00
Steve Ellcey
a1a7820416 Remove compat from DEFAULT_CONFIG lookup strings
* grp/initgroups.c: Include config.h.
	(DEFAULT_CONFIG): New macro.
	(internal_getgrouplist): Use DEFAULT_CONFIG.
	* nscd/initgrcache.c (addinitgroupsX): Likewise.
	* nss/nsswitch.c (__nss_disable_nscd): Likewise.
	(DEFAULT_DEFCONFIG): New macro.
	(__nss_database_lookup): Use DEFAULT_DEFCONFIG.
	* nss/grp-lookup.c: Include config.h
	(DEFAULT_CONFIG): Set definition based on LINK_OBSOLETE_NSL.
	* nss/pwd-lookup.c (DEFAULT_CONFIG): Likewise.
	* nss/spwd-lookup.c (DEFAULT_CONFIG): Likewise.
	* manual/nss.texi: Update default values section.
2017-09-12 10:21:48 -07:00
H.J. Lu
1dbbb1ec7a Mark internal nss symbols with attribute_hidden [BZ #18822]
Mark internal nss symbols with attribute_hidden to allow direct access
within libc.so and libc.a without using GOT nor PLT.

Tested on x86-64 with and without --disable-nscd.

	[BZ #18822]
	* grp/initgroups.c (__nss_group_database): Removed.
	(__nss_initgroups_database): Likewise.
	* nscd/gai.c (__nss_hosts_database): Likewise.
	* nss/XXX-lookup.c (DATABASE_NAME_SYMBOL): Likewise.
	* posix/tst-rfc3484-2.c (__nss_hosts_database): Likewise.
	* posix/tst-rfc3484-3.c (__nss_hosts_database): Likewise.
	* posix/tst-rfc3484.c (__nss_hosts_database): Likewise.
	* sysdeps/posix/getaddrinfo.c (__nss_hosts_database): Likewise.
	* nss/getXXent.c (INTERNAL (REENTRANT_GETNAME)): Add
	attribute_hidden.
	* nss/nsswitch.c (__nss_database_custom): Define only if
	USE_NSCD is defined.
	(__nss_configure_lookup): Use __nss_database_custom only if
	USE_NSCD is defined.
	* nss/nsswitch.h (__nss_database_custom): Declare only if
	USE_NSCD is defined.  Add attribute_hidden.
	(__nss_setent): Add attribute_hidden.
	(__nss_endent): Likewise.
	(__nss_getent_r): Likewise.
	(__nss_getent): Likewise.
	(DEFINE_DATABASE): Declare __nss_##arg##_database.
2017-08-21 05:31:19 -07:00
Florian Weimer
c88ffc239e NSS: Replace exported NSS lookup functions with stubs [BZ #21962]
Commit 384ca55174 from 2007 added this to
nss/XXX-lookup.c:

+#ifndef NO_COMPAT
+int
+internal_function attribute_compat_text_section
+DB_COMPAT_FCT (service_user **ni, const char *fct_name, void **fctp)
+{
+  return DB_LOOKUP_FCT (ni, fct_name, NULL, fctp);
+}
+#endif

That is, it adds a pseudo-compat function with an internal_function
attribute.  The function it was supposed to replace did not have the
attribute:

 extern int DB_LOOKUP_FCT (service_user **ni, const char *fct_name,
-			  void **fctp) internal_function;
+			  const char *fct2_name, void **fctp)
+  internal_function;

This changed the calling convention on i386 for the following
functions in the public ABI:

  __nss_passwd_lookup
  __nss_group_lookup
  __nss_hosts_lookup

This commit replaces the functions with always-failing stubs,
with true compat symbols.  Due to a happy accident, the calling
convention of the stub is identical for the internal_function
and non-internal_function case on i386.

In addition, this commit auto-generates the __nss_*_lookup2
function declarations as part of <nsswitch.h>.
2017-08-14 18:13:42 +02:00
Joseph Myers
bfff8b1bec Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Joseph Myers
f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Florian Weimer
866ba63b31 grp: Rewrite to use struct scratch_buffer instead of extend_alloca
grp/compat-initgroups.c is included from nscd/initgrcache.c, which is
why the #include directive has to be added there as well.
2015-04-08 21:07:03 +02:00
Joseph Myers
b168057aaa Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Ondřej Bílka
a1ffb40e32 Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
Allan McRae
d4697bc93d Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Joseph Myers
f4cf5f2d8b Add script to update copyright notices and reformat some to facilitate its use. 2013-01-01 16:29:10 +00:00
Chris Metcalf
017678433c Suppress incorrect link warnings for NSS symbols
When glibc is built with --enable-static-nss, the warning that
using NSS symbols requires the nss shared objects to be present
is no longer true, as those symbols are built into libc.  Suppress
the warning for those symbols by providing a new macro
(nss_interface_function) for the NSS functions that is defined as
static_link_warning in the normal case, and empty for static NSS.
2012-10-30 14:14:33 -04:00
Paul Eggert
59ba27a63a Replace FSF snail mail address with URLs. 2012-02-09 23:18:22 +00:00
Andreas Schwab
629f62ef0f Correctly handle missing initgroups database 2011-10-17 09:53:10 +02:00
Ulrich Drepper
c41af17eed Fix handling of initgroups database. 2011-06-15 21:06:19 -04:00
Ulrich Drepper
7b3b0b2a63 More configurability for secondary group lookup
Together with a previous patch which introduced the initgroups
entry in nsswitch.conf this patch allows more customization of
the lookups for initgroups/getgrouplist.  Nothing changes if
the groups entry in nsswitch.conf is used.  If the initgroups entry
is used instead the code now doesn't automatically continue looking
for more entries aftedr a successful lookup.  Instead the normal
rules are followed which do specify that by default no more
service is consulted.  This can be overwritten with
	[SUCCESS=continue]
appropriately placed in the line.
2011-05-10 00:36:29 -04:00
Ulrich Drepper
125ee683b3 Add finer grained control for initgroups lookups to NSS. 2011-04-29 11:16:30 -04:00
Ulrich Drepper
c3e2f19bb9 Add self-contained test for NSS.
While at it fix interaction between __nss_configure_lookup and nscd.
Otherwise the test fails if nscd is runnung.
2010-08-11 07:25:02 -07:00
Ulrich Drepper
332c4465b0 * grp/initgroups.c (internal_getgrouplist): Don't prematurely
abort if there is no initgroups_dyn function.
2008-10-30 16:55:44 +00:00
Ulrich Drepper
a585280778 [BZ #2883]
* sysvipc/sys/msg.h: Change return value to ssize_t.
	* sysdeps/unix/sysv/linux/msgrcv.c: Likewise.
2006-08-03 15:41:32 +00:00
Ulrich Drepper
39571a1360 (getgrouplist): Simplify code a bit. Don't allocate one additional
element on NEWGROUPS.
2006-08-03 15:31:32 +00:00
Ulrich Drepper
6c215a8d6c * grp/initgroups.c (internal_getgrouplist): Remove unnecessary
test introduced in patch for bz #661.
	(getgrouplist): Simplify code a bit.
2006-08-03 15:26:02 +00:00
Roland McGrath
edac424073 [BZ #661]
2005-03-19  Bruno Haible  <bruno@clisp.org>
	* intl/dcigettext.c (struct known_translation_t): Change type of
	domainname field to 'const char *'.
	(DCIGETTEXT): Remove const-cast.

	[BZ #661]
	* grp/initgroups.c (internal_getgrouplist): Check if we have
	enough space before adding the primary group to the list.
2005-03-29 23:41:03 +00:00
Ulrich Drepper
a334319f65 (CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4. 2004-12-22 20:10:10 +00:00
Jakub Jelinek
0ecb606cb6 2.5-18.1 2007-07-12 18:26:36 +00:00
Ulrich Drepper
695c43708f Update.
2004-10-05  Ulrich Drepper  <drepper@redhat.com>

	* grp/initgroups.c: Remove duplicate group IDs.
	* grp/compat-initgroups.c: Likewise.
	* nscd/initgrcache.c: Likewise.
2004-10-05 15:36:41 +00:00
Ulrich Drepper
f7e7a39681 Update.
* grp/initgroups.c: Move compat_call implementation...
	* grp/compat-initgroups.c: ...to here.  New file.
	* grp/Makefile (distribute): Add compat-initgroups.c.
	(CFLAGS-initgroups.c): Add -DUSE_NSCD=1.
	* mscd/initgrcache.c: New file.
	* nscd/nscd_initgroups.c: New file.
	* nscd/Makefile (routines): Add nscd_initgroups.
	(nscd-modules): Add initgrcache.
	* nscd/cache.c (prune_cache): Add support for INITGROUPS entries.
	* nscd/connections.c: Handle INITGROUPS requests.
	* nscd/nscd-client.h: Define INITGROUPS, initgr_response_header.
	Add initgrdata element to struct datahead.  Fix typo in comment.
	* nscd/nscd_proto.h: Declare __nscd_getgrouplist.  Fix parameter
	type in __nscd_getgrgrid_r.
	* nscd/selinux.c (perms): Add INITGROUPS entry.

	* nscd/nscd_getai.c: No need to include <sys/mman.h>.

	* sunrpc/get_myaddr.c (get_myaddress): Account for interfaces without
	assigned addresses.
	* sunrpc/pmap_clnt.c (__get_myaddress): Likewise.
	* sunrpc/pmap_rmt.c (getbroadcastnets): Likewise.
	* sunrpc/clnt_udp.c (is_network_up): Likewise.
2004-09-30 02:24:51 +00:00
Ulrich Drepper
ff0913d3a3 Update.
2004-03-30  Ulrich Drepper  <drepper@redhat.com>

	* nis/nss_nis/nis-initgroups.c: Implement getting the information
	from the netid.byname map if the system administrator allows this.

	* grp/initgroups.c (initgroups): Limit the initial allocation to 64
	entries to not allocate too much on systems with really high limits.
2004-03-30 18:23:15 +00:00
Ulrich Drepper
2f7f7bc658 Update.
2003-06-16  Thorsten Kukuk  <kukuk@suse.de>

	* include/libc-symbols.h: Add static_link_warning macro.
	* grp/initgroups.c: Print linker warning if this function
	is called in a static linked binary.
	* nss/getXXbyYY.c: Likewise.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/getXXent.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* sysdeps/posix/getaddrinfo.c: Likewise.

2003-06-16  Bruno Haible  <bruno@clisp.org>

	* iconvdata/gconv-modules (ISO-8859-15): Add aliases ISO_8859-15,
	LATIN-9.
	(ISO-8859-16): Add aliases ISO_8859-16:2001, ISO_8859-16.
	(IBM1047): Add alias IBM-1047.
	(GBK): Add aliases MS936, WINDOWS-936.

2003-06-16  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Define even if
	defined __ASSUME_STAT64_SYSCALL && defined XSTAT_IS_XSTAT64.
	(__xstat64_conv): Change xstat_conv to __xstat_conv.

	Reported by Arnaud Desitter <arnaud.desitter@geography.oxford.ac.uk>.
2003-06-16 17:18:06 +00:00
Ulrich Drepper
b9b9a51e49 Update.
2003-04-23  Ulrich Drepper  <drepper@redhat.com>

	* grp/initgroups.c (getgrouplist): Don't copy too much into the
	user buffer if more groups are found than fit into it.

	* nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Use
	extend_alloca.
2003-04-23 21:27:36 +00:00
Ulrich Drepper
bf494c7d6b Update.
* grp/initgroups.c (__nss_group_data): Declare as hidden.
2002-03-13 19:21:13 +00:00
Roland McGrath
79dbd98195 * nss/nsswitch.c (__nss_next): Don't use __FUNCTION__ as literal.
* grp/initgroups.c (internal_getgrouplist): Likewise.
2001-12-17 05:52:18 +00:00
Andreas Jaeger
41bdb6e20c Update to LGPL v2.1.
2001-07-06  Paul Eggert  <eggert@twinsun.com>

	* manual/argp.texi: Remove ignored LGPL copyright notice; it's
	not appropriate for documentation anyway.
	* manual/libc-texinfo.sh: "Library General Public License" ->
	"Lesser General Public License".

2001-07-06  Andreas Jaeger  <aj@suse.de>

	* All files under GPL/LGPL version 2: Place under LGPL version
	2.1.
2001-07-06 04:58:11 +00:00
Ulrich Drepper
8fee1bb0b2 Update.
2001-06-07  Mark Kettenis  <kettenis@gnu.org>

	* grp/initgroups.c (initgroups): Factor out re-usable code into...
	(internal_getgrouplist): ... new function.
	(getgrouplist): New function.
	* grp/grp.h (getgrouplist): New prototype.
	* grp/Versions [2.2.4]: Add getgrouplist.

2001-06-16  Ulrich Drepper  <drepper@redhat.com>

	* inet/netinet/ip6.h: Fix comments in ip6_hdr.
	Patch by Pekka Savola <pekkas@netcore.fi>.
2001-06-16 19:50:36 +00:00
Roland McGrath
3de33da93f * grp/initgroups.c (initgroups) [NGROUPS_MAX != 0]: Always use sysconf
instead of the constant NGROUPS_MAX.  That way, the limit can be
	raised in the kernel configuration without having to recompile libc.

	* sysdeps/posix/euidaccess.c: Don't #include <limits.h> or try to
	define NGROUPS_MAX; we don't use it here.
2001-04-17 03:34:20 +00:00
Ulrich Drepper
84364bf861 Update.
* grp/initgroups.c (initgroups): Deallocate groups array.
	Reported by jani.raiha@sonera.com [PR libc/1868].
2000-08-24 07:57:44 +00:00
Andreas Jaeger
72eb780897 (initgroups_dyn_function): Renamed from initgroups_function, adopted prototype for change from 2000-07-23. (initgroups): Follow type change. 2000-07-24 16:48:34 +00:00
Ulrich Drepper
7603ea28d3 Update.
* string/endian.h: Explain the _*_ENDIAN constant values a bit
	more.  Patch by scarlet@mit.edu [PR libc/1799].

	* io/ftwtest-sh: Add -f parameter to chmod if -R is also given.
	[PR libc/1792].

	* argp/argp-parse.c (parser_finalize): Reverse order in which
	parsers are run for ARGP_KEY_END.  [PR libc/1755].
2000-07-24 05:41:25 +00:00
Ulrich Drepper
cf9e9ad98f Update.
* grp/initgroups.c (initgroups): Don't limit the possible number
	of groups to NGROUPS_MAX.  Allow dynamic resizing.  Loop around
	the setgroups call while the call fails and descrease the number
	of groups each round.
	The name of the initgroups function in the NSS modules changed.
	(compat_call): Adapt for dynamic resizing.
	* hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn):
	Implement dynamic resizing.
	* nis/nss_compat/compat-initgroups.c (_nss_compat_initgroups_dyn):
	Likewise.
	* nis/nss_nis/compat-initgroups.c (_nss_nis_initgroups_dyn): Likewise.
	* hesiod/Versions: Change exported interface name.
	* nis/Versions: Change exported interface name.

2000-07-23  Ulrich Drepper  <drepper@redhat.com>
2000-07-24 01:26:01 +00:00
Ulrich Drepper
a711dd4ba8 Update.
2000-04-21  Ulrich Drepper  <drepper@redhat.com>

	* iconv/iconv.c (iconv): Add __builtin_expect where useful.
	* iconv/iconv_close.c (iconv_close): Likewise.
	* iconv/iconv_open.c (iconv_open): Likewise.

	* grp/putgrent.c (putgrent): Unlock steam if fprintf failed.  Add
	__builtin_expect where useful.

	* grp/initgroups.c (initgroups): Test for result of memory
	allocation and punt if it fails.

	* dirent/scandir.c (scandir): Add __builtin_expect where useful.
	* grp/fgetgrent.c (fgetfrent): Likewise.
	* grp/fgetgrent_r.c (__fgetgrent_r): Likewise.
2000-04-21 16:15:11 +00:00
Ulrich Drepper
4159e38701 Update.
* misc/Makefile (routines): Add mincore.

2000-03-20  Andreas Jaeger  <aj@suse.de>

	* sysdeps/generic/mincore.c: New stub file.

	* sysdeps/unix/sysv/linux/arm/bits/mman.h (MADV_*): Add flags
	from latest Linux kernel.

2000-03-20  Ulrich Drepper  <drepper@redhat.com>
2000-03-20 22:54:01 +00:00