62 Commits

Author SHA1 Message Date
martin
ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
christos
b513fb7c0a make this compile with DIAGNOSTIC 2007-02-03 16:12:47 +00:00
christos
ce2c90c7c1 fix incomplete initializers 2006-10-15 16:14:46 +00:00
christos
8a8a2fc7a2 iCoverity CID 706: Remove dead code. 2006-03-19 03:08:11 +00:00
lukem
9fcbc80387 When sequentially parsing a source looking for entries don't fail with
NS_UNAVAIL on an unparseable or too long line; instead try the next entry.
This is more consistent with the behaviour prior to the rework in rev 1.49.
2005-04-19 05:27:58 +00:00
lukem
d0388cff8b getgrent():
Return the correct result. (broken in rev 1.56 -- Hi Christos!)

getgr{ent,nam,uid}_r():
Return 0 "entry not found" and errno for other failures.
("entry not found" still sets *result to NULL).

Various backends:
don't set the retval to errno (or modify errno) for NS_NOTFOUND.

Per discussion with Klaus Klein.
2005-04-19 03:00:12 +00:00
christos
184974e05a PR/29849, PR/29850: Add getpwent_r and getgrent_r 2005-04-02 04:53:53 +00:00
lukem
7f46de1e4e tweak comment reminding us about lack of reentrancy 2005-03-31 23:58:28 +00:00
lukem
337d8d731d Rename various "internal" variables and functions and make non-static so other
internal libc source files can use these (including getgroupmembership(3)).

Be more consistent in the API that the __grscan_<source>() methods use.

In __grscan_compat() support an optional custom 'search' function used when a
"+" lookup is required.  Normally this will be getgrent() from group_compat,
but getgroupmembership(3) will use a tailored compat search routine for
efficiency.
2005-01-06 15:00:45 +00:00
lukem
c873ad0d2e Use the common __nsdefaultFOO rather than private defaultFOO duplicates. 2004-11-10 12:57:32 +00:00
lukem
2ffe6b72ba Use _GETGR_R_SIZE_MAX from <limits.h> rather than defining a private version. 2004-11-10 06:10:03 +00:00
lukem
c49e808721 #include "reentrant.h" instead of <threadlib.h> 2004-10-29 06:32:08 +00:00
lukem
feb92219d9 Protect access to all public functions via a mutex as some of the backends are
not reentrant (such as compat getgr*_r, because it uses the non reentrant
_{dns,nis}_getgrent() backends to implement `+group').
2004-10-24 14:52:46 +00:00
lukem
c54f283e46 Overhaul the use of nsdispatch(3) by public APIs so that the back-end
methods use va_list in a manner that is directly related to the public API.
This makes it much easier to write dynamic nsswitch backends for getgrent(3).
Per my proposal on tech-userlevel.

Implement getgrgid_r() and getgrnam_r() APIs per the POSIX 1003.1, 2004 Ed.
These aren't fully reentrant or threadsafe yet, because the compat stuff
currently uses non-reentrant data sources (getnetgrent(3), getgrent(3)),
and there is probably some locking to be improved in the backends.
This will be fixed in the near future.
We also need to add _SC_GETGR_R_SIZE_MAX to sysconf(3).
2004-10-04 04:11:33 +00:00
agc
9f1aac5bb3 Move Jason Downs's code from a 4-clause to a 3-clause licence by
removing the advertising clause.  Diffs provided in PR 22410 by Joel
Baker, confirmed to the board by Jason Downs.

With additional thanks to Jason Thorpe.
2003-10-13 15:36:33 +00:00
agc
eb7c1594f1 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22280, verified by myself.
2003-08-07 16:42:00 +00:00
simonb
118763056a Fix a tyop in a comment. 2003-02-17 00:11:54 +00:00
elric
16c5a7dd8d Reorganise the getting of grouplists for a user so that Hesiod (and
potentially other name services) can directly query for a user's
grouplist rather than needing to iterate over the group map.  This
is required for correct operation of Hesiod.

Reviewed by: lukem, christos
Addresses PR lib/20183
2003-02-16 01:22:44 +00:00
elric
1b4eceb53f When looking up gids with hesiod, use the gid map and fall back to the
group map.

Addresses PR lib/20145
2003-02-03 04:22:20 +00:00
itojun
9134efabd0 use strlcpy where it is more appropriate. 2002-11-17 01:51:24 +00:00
lukem
4ddb8bc644 be consistent with internal names: s/start_gr/grstart/ ; s/matchline/gr&/ 2002-02-02 15:21:29 +00:00
lukem
3792c58680 ansi knf 2002-01-12 23:51:30 +00:00
lukem
741ea8dc94 fix typo in _nis_grscan(). "if (data); free(data);" -> "if (data) free(data);"
noted by Jacques Vidrine <nectar@FreeBSD.org>
2000-12-17 22:09:12 +00:00
mycroft
605490369c Delint.
Remove trailing ; from uses of __weak_alias().  The macro inserts this if
needed.
2000-01-22 22:19:07 +00:00
lukem
d896261208 back out the #ifdef _DIAGNOSTIC argument checks; too many people complained.
_DIAGASSERT() is still retained.
1999-09-20 04:38:56 +00:00
lukem
b48252f365 * use _DIAGASSERT() to check pointer arguments against NULL and file
descriptors against -1 (as appropriate).
* add actual checks which to detect stuff that would trigger_DIAGASSERT(),
  and attempt to return a sane error condition.
* knf some code
* remove some `register' decls.

the first two items result in the addition of code similar to the
following in various functions:

		_DIAGASSERT(path != NULL)
	#ifdef _DIAGNOSTIC
		if (path == NULL) {
			errno = EFAULT;
			return (-1);
		}
	#endif
1999-09-16 11:44:54 +00:00
lukem
326483c4de change getgrent() backends so that a flag (per source) is set once the
source has been exhausted. this allows getgrent() across multiple
sources (e.g, ``group: files nis'') to work correctly. the flags are
reset in setgrent()/endgrent().

(as per similar change in getpwent.c rev 1.42)

XXX: this change means that code that uses getgrent() to obtain a list
of groups will have to do duplicate suppression... getgrouplist()
springs to mind; i'm about to modify that
1999-04-25 13:39:41 +00:00
lukem
73e9ef01be specifically include stdarg/varargs.h 1999-04-18 02:04:04 +00:00
lukem
7f1c203c11 always compile in support for `compat' backends (even if !YP & !HESIOD),
and make it the responsibility of the backends to fallback to `files'
if !YP & !HESIOD. fixes chsh problem noted by billc@netbsd.org.
1999-01-26 01:08:06 +00:00
lukem
147dea105a convert from hes_*() -> hesiod_*() 1999-01-25 01:09:34 +00:00
lukem
40901ecd3c nsdispatch defaults now: "group: compat", "group_compat: nis" 1999-01-20 02:59:37 +00:00
lukem
b247a8eceb * passwd' defaults to compat', and passwd_compat' defaults to nis'
* constify ns_dtab defs
1999-01-19 08:30:46 +00:00
lukem
6a471ed8f9 convert to new nsdispatch(3) 1999-01-19 08:07:58 +00:00
christos
6304dadc4d delint 1999-01-18 20:36:32 +00:00
lukem
e50f4e6efc fix some gid casts 1999-01-16 14:44:33 +00:00
lukem
0eb8645e3a pull nsswitch up to main branch 1999-01-16 07:47:18 +00:00
perry
98b9f211ee fix bcopy->memcpy with memcpy->memmove -- not strictly needed, but... 1998-08-26 00:38:39 +00:00
perry
a843f0f8a5 bzero->memset, bcopy->memcpy, bcmp->memcmp 1998-08-10 02:43:08 +00:00
mycroft
131e747015 Make these compile without __AUDIT__. 1998-07-27 09:47:44 +00:00
mycroft
e5d9823796 const poisoning. 1998-07-26 19:05:06 +00:00
perry
1f95191dfb trivial changes to reduce lint complaints 1998-02-26 03:01:12 +00:00
jtc
43fa6fe319 If port provides __weak_alias(), provide an Standard C and POSIX pure
identifier namespace by renaming non standard functions and variables
such that they have a leading underscore.  The library will use those
names internally.  Weak aliases are used to provide the original names
to the API.

This is only the first part of this change.  It is most of the functions
which are implemented in C for all NetBSD ports.  Subsequent changes are
to add the same support to the remaining C files, to assembly files, and
to the automagically generated assembly source used for system calls.
When all of the above is done, ports with weak alias support should add
a definition for __weak_alias to <sys/cdefs.h>.
1997-07-21 14:06:24 +00:00
christos
11cac2080a Add missing prototypes
Fix RCSID's
Fix gcc warnings
1997-07-13 19:01:22 +00:00
lukem
76c3314d9b a valid uid/gid *ends* in \0 (i.e, barf if (*ep != '\0'), not if (*ep == '\0')) 1997-05-22 10:38:07 +00:00
lukem
50820e9b86 * parse gid with strtoul() instead of atoi(), and sanity check a) the parsed
value was just a number, b) it doesn't exceed GID_MAX
* convert gid to a string with %u not %d
* use [gu]id_t instead of int
1997-05-22 03:24:37 +00:00
lukem
8041f4f4ab fix potential memory leaks: before calling yp_next(), reset key to NULL. if
an error occurred, and key != NULL, free(key).
1997-05-21 01:51:39 +00:00
lukem
27d1a6365b * ensure that "outdata" values to various yp_xxx() functions are set
to the null pointer before invocation, so that the test in the
  error case of "if (outdata != NULL) free(outdata)" won't potentially
  try and free memory that wasn't malloc()ed.
* factor some duplicated code out of both parts of an "if {} else {}"
  construct.
* remove use of `register' & KNFify.
1997-05-20 15:46:03 +00:00
thorpej
30ec3e8a63 Don't transfer the entire YP database using yp_{first,next}(); instead
use yp_match(), which is much more efficient.

From Michael.Eriksson@era-t.ericsson.se, PR #3114.
1997-01-22 01:21:06 +00:00
cgd
7edc9015ae grscan()'s last arg has to be a const char *, not just a char * 1996-12-20 19:38:16 +00:00
phil
e69d413643 Improvements to YP support from Jason Downs. 1995-07-28 05:43:01 +00:00