summaryrefslogtreecommitdiffstats
path: root/lib/libc/yp
Commit message (Collapse)AuthorAgeFilesLines
* MFC: r291073araujo2015-12-211-5/+28
| | | | | | | | | | | | | | | | | | | If a NIS server has long entries on its database that is bigger than 1024 specified on YPMAXRECORD the ypmatch can get in an infinite retry loop when is requesting the information from the NIS server. The ypmatch(1) will return an error until the command receives an kill(1). To avoid this problem, we check the MAX_RETRIES that is by default set to 20 and avoid get in infinet loop at the client side. NOTE: FreeBSD nis(8) server doesn't present this issue. Submitted by: Ravi Pokala <rpokala at panasas.com>, Lakshmi N. Sundararajan <lakshmi.n at msystechnologies.com>, Lewis, Fred <flewis at panasas.com>, Pushkar Kothavade <pushkar.kothavade at msystechnologies.com>
* libc: Use O_CLOEXEC for various internal file descriptors.jilles2012-09-291-1/+1
| | | | | | | | | This fixes a race condition where another thread may fork() before CLOEXEC is set, unintentionally passing the descriptor to the child process. This commit only adds O_CLOEXEC flags to open() or openat() calls where no fcntl(fd, F_SETFD, FD_CLOEXEC) follows. The separate fcntl() call still leaves a race window so it should be fixed later.
* Consistently set RPCGEN_CPP when running rpcgen, so the C preprocessordim2012-02-071-1/+1
| | | | | | set via ${CPP} is used, instead of always using hardcoded /usr/bin/cpp. MFC after: 1 week
* Handle malloc failures in yplib.c.ghelmer2011-12-231-0/+46
| | | | PR: bin/83349
* Handle failures to malloc memory to hold key or val copies.ghelmer2011-12-231-0/+11
| | | | PR: bin/83348
* Remove duplicate "in".brucec2011-03-011-1/+1
| | | | | Suggested by: Rob Farmer <rfarmer at predatorlabs.net> MFC after: 3 days
* Revert some of r177626. "in in" is valid in certain sentences.brucec2011-02-281-1/+1
| | | | | PR: 121490 MFC after: 3 days
* Eliminate more dead stores.wollman2009-11-251-1/+1
| | | | | Found by: Clang static analyzer MFC after: 7 days
* Fix some "in in" typos in comments.brueffer2008-03-261-1/+1
| | | | | | | PR: 121490 Submitted by: Anatoly Borodin <anatoly.borodin@gmail.com> Approved by: rwatson (mentor), jkoshy MFC after: 3 days
* Set timeout for all NIS RPC requests to 1 second and not just forsimon2007-07-241-8/+8
| | | | | | | | | | | | yp_next as revision 1.50 did. This should fix, or at least very much reduce the risk of, NIS timing out due to UDP packet loss for NIS functions. See also revision 1.50 for more details about the general problem. Tested by: nosedive, freefall, hub, mx1, brooks MFC after: 1 week Approved by: re (mux)
* Use C comments since we now preprocess these files with CPP.deischen2007-04-291-1/+3
|
* - Bump _yplib_timeout limit from 10 to 20 seconds to better handlesimon2007-03-041-1/+9
| | | | | | | | | | | | | | | | | | | | | | | packet loss when talking to a NIS server. - Set 1 second retry timeout to further realistically handle UDP packet loss for yp_next packet bursts. If the packet hasn't come back within 1 second its rather unlikely to come back at all. There is still back-off mechanism in RPC so if there is another reason than packet loss for the lack of response within 1 second, the NIS server will not be totally bombarded with requests. This reduces the risk of NIS failing with: yp_next: clnt_call: RPC: Timed out considerably. This is mainly a problem if you have larger NIS maps (like at FreeBSD.org) since enumerations of the lists will cause a UDP packet bursts where a few packets being lost once in a while do happen. MFC after: 1 week Discussed with: peter Problem mainly diagnosed by: peter
* Add each directory's symbol map file to SYM_MAPS.deischen2006-03-131-0/+2
|
* Add symbol maps and initial symbol version definitions to libc.deischen2006-03-131-0/+23
| | | | Reviewed by: davidxu
* do mutex lock for each yp calls. with this,ume2005-05-031-13/+65
| | | | | http://cvsweb.netbsd.org/bsdweb.cgi/src/regress/lib/libpthread/resolv/ is working.
* MUTEX_INITIALIZER should be used instead ofume2005-04-061-1/+1
| | | | PTHREAD_MUTEX_INITIALIZER, here.
* protect _yp_domain with mutex lock.ume2005-04-051-3/+24
| | | | Inspired by: NetBSD
* Use socklen_t where appropriate.stefanf2005-03-111-2/+2
|
* Back out the `hiding' of strlcpy and strlcat. Several peoplenectar2003-05-011-1/+1
| | | | vocally objected to this safety belt.
* `Hide' strlcpy and strlcat (using the namespace.h / __weak_referencenectar2003-04-291-1/+1
| | | | | | | technique) so that we don't wind up calling into an application's version if the application defines them. Inspired by: qpopper's interfering and buggy version of strlcpy
* libc_r wasn't so tied to libc for 22 months.ru2002-11-181-1/+1
|
* Spell void * as void * rather than caddr_t. This is complicated by thedes2002-04-282-23/+30
| | | | | | fact that caddr_t is often misspelled as char *. Sponsored by: DARPA, NAI Labs
* Fix the style of the SCM ID's.obrien2002-03-222-6/+4
| | | | I believe have made all of libc .c's as consistent as possible.
* o Move NTOHL() and associated macros into <sys/param.h>. These aremike2002-02-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | deprecated in favor of the POSIX-defined lowercase variants. o Change all occurrences of NTOHL() and associated marcros in the source tree to use the lowercase function variants. o Add missing license bits to sparc64's <machine/endian.h>. Approved by: jake o Clean up <machine/endian.h> files. o Remove unused __uint16_swap_uint32() from i386's <machine/endian.h>. o Remove prototypes for non-existent bswapXX() functions. o Include <machine/endian.h> in <arpa/inet.h> to define the POSIX-required ntohl() family of functions. o Do similar things to expose the ntohl() family in libstand, <netinet/in.h>, and <sys/param.h>. o Prepend underscores to the ntohl() family to help deal with complexities associated with having MD (asm and inline) versions, and having to prevent exposure of these functions in other headers that happen to make use of endian-specific defines. o Create weak aliases to the canonical function name to help deal with third-party software forgetting to include an appropriate header. o Remove some now unneeded pollution from <sys/types.h>. o Add missing <arpa/inet.h> includes in userland. Tested on: alpha, i386 Reviewed by: bde, jake, tmm
* ANSIfy and remove some dead code.des2002-02-062-81/+35
| | | | Sponsored by: DARPA, NAI Labs
* Apply the following mechanical transformations in preparation fordes2002-02-062-133/+133
| | | | | | | | | | | | | | | | | ansification and constification: s{\s+__P\((\(.*?\))\)}{$1}g; s{\(\s+}{\(}g; s{\s+\)}{\)}g; s{\s+,}{,}g; s{(\s+)(for|if|switch|while)\(}{$1$2 \(}g; s{return ([^\(].*?);}{return ($1);}g; s{([\w\)])([!=+/\*-]?=)([\w\(+-])}{$1 $2 $3}g; s{\s+$}{\n};g Also add $FreeBSD$ where needed. MFC after: 1 week
* Fix cc -Wall, fix rcsid warnings, add missing prototypes,alfred2002-02-052-2/+2
| | | | | | | | | change prototypes to be the same as in the original sun tirpc code. Remove ()P macro in a file where the mayority had ()P already removed. Add them if the mayority use ()P macros. Submitted by: mbr Requested by: bde
* Fix some 32/64-bit bugs. IPv4 addresses are 32-bits, not longs. On thejhb2002-01-081-8/+12
| | | | | | | | alpha these bugs didn't cause any problems because it was little endian, but on sparc64, we ended up with garbage for the IP address when we tried to contact the server. (Usually 3.253.0.0) Not objected to by: wpaul
* Changed the clnt_perror string in yp_all because it was saying thepirzyk2001-05-231-1/+1
| | | | | | | | | error came from yp_next PR: bin/13254 Submitted by: Jim Pirzyk Reviewed by: jkh MFC after: 1 week
* Remove _THREAD_SAFE and make libc thread-safe by default bydeischen2001-01-241-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | adding (weak definitions to) stubs for some of the pthread functions. If the threads library is linked in, the real pthread functions will pulled in. Use the following convention for system calls wrapped by the threads library: __sys_foo - actual system call _foo - weak definition to __sys_foo foo - weak definition to __sys_foo Change all libc uses of system calls wrapped by the threads library from foo to _foo. In order to define the prototypes for _foo(), we introduce namespace.h and un-namespace.h (suggested by bde). All files that need to reference these system calls, should include namespace.h before any standard includes, then include un-namespace.h after the standard includes and before any local includes. <db.h> is an exception and shouldn't be included in between namespace.h and un-namespace.h namespace.h will define foo to _foo, and un-namespace.h will undefine foo. Try to eliminate some of the recursive calls to MT-safe functions in libc/stdio in preparation for adding a mutex to FILE. We have recursive mutexes, but would like to avoid using them if possible. Remove uneeded includes of <errno.h> from a few files. Add $FreeBSD$ to a few files in order to pass commitprep. Approved by: -arch
* Simplify sytem call renaming. Instead of _foo() <-- _libc_foo <-- foo(),jasone2000-01-271-9/+15
| | | | | | | | | | | | | | | | | just use _foo() <-- foo(). In the case of a libpthread that doesn't do call conversion (such as linuxthreads and our upcoming libpthread), this is adequate. In the case of libc_r, we still need three names, which are now _thread_sys_foo() <-- _foo() <-- foo(). Convert all internal libc usage of: aio_suspend(), close(), fsync(), msync(), nanosleep(), open(), fcntl(), read(), and write() to _foo() instead of foo(). Remove all internal libc usage of: creat(), pause(), sleep(), system(), tcdrain(), wait(), and waitpid(). Make thread cancellation fully POSIX-compliant. Suggested by: deischen
* Add three-tier symbol naming in support of POSIX thread cancellationjasone2000-01-121-9/+9
| | | | | | points. For library functions, the pattern is __sleep() <-- _libc_sleep() <-- sleep(). The arrows represent weak aliases. For system calls, the pattern is _read() <-- _libc_read() <-- read().
* Fix buffer overflows.kris1999-12-051-2/+2
| | | | Reviewed by: imp, audit@freebsd.org
* $Id$ -> $FreeBSD$peter1999-08-283-3/+3
|
* Fixed the usual missing dependencies on headers generated by rpcgen.bde1998-05-091-6/+6
| | | | | | | | | Use rpcgen's -C option, although using it for non-headers breaks K&R support. A local copy of yp.h is built to avoid adding -I/usr/include/rpcsvc to CFLAGS. This version of yp.h differed from <rpcsvc/yp.h> only in not declaring prototypes. Fixed style bugs.
* Fix resource allocation problems:wpaul1998-03-071-94/+176
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Completely recoded the ypmatch cache code. The old code could leak memory: it would allow the cache to grow, but never shrink. The new code imposes the following limits: o The cache is capped at a limit of 5 entries. o Each entry expires after five seconds, at which point its slot is freed. o If an insertion is to be done and all five slots are filled, the oldest entry is forcibly expired to release its slot. Also, the cache is implemented on a per-binding basis rather than having a global cache covering all bindings. This means that each bound domain has its own 5 slot cache. - Changed clntudp_create() to clntudp_bufcreate() so that the xmit/recv message buffer sizes can be set explicitly. NIS transactions are rarely much larger than 1024 bytes since YPMAXRECORD is 1024. The defaults chosen by clntudb_create() are actually much larger than needed. I set the xmit buffer to a little over 1024 and the recv buffer to a little over 2048. This saves a few Kbytes for each NIS binding. - Add my name to the copyright. I think I've made enough changes to this file to merit it. :) Note: these changes should go into the 2.2.x branch, but I'm waiting on feedback from a tester to see if the cache fixes solve the reported memory leak problem.
* Use ${DESTDIR} correctly in front of absolute paths.asami1997-05-231-2/+2
|
* Changed all paths to be relative to src/lib instead of src/lib/libcjb1997-05-031-2/+2
| | | | | | | | | | so that all these makefiles can be used to build libc_r too. Added .if ${LIB} == "c" tests to restrict man page builds to libc to avoid needlessly building them with libc_r too. Split libc Makefile into Makefile and Makefile.inc to allow the libc_r Makefile to include Makefile.inc too.
* Don't even think about processing bogus domain names here.wpaul1997-04-101-1/+5
|
* Revert $FreeBSD$ to $Id$peter1997-02-223-3/+3
|
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-143-3/+3
| | | | | | | | This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
* Fix for bug noticed by Christoph Kukulies.wpaul1996-12-201-2/+3
| | | | | | | | | | | | | | | | _yp_dobind() checks to see if a fork() happens (by checking PIDs) and invalidates all bindings if it finds itself in a newly created child process. (This avoids sharing RPC client handles and socket descriptors with the parent, which would be bad.) Unfortunately, it summarily calls clnt_destroy() on the handles, which may result in the destruction of a descriptor that isn't really a socket. This is fixed by replacing the explicit call to clnt_destroy() with a call to _yp_unbind(), which deals with potentially hosed socket descriptors an a safe manner. This is basically a one-liner. Once I confirm that it fixes Christoph's problem, I'd like permission to put it in the 2.2-RELENG branch.
* - Avoid possible SEGVs: never call clnt_destroy() without checkingwpaul1996-11-081-8/+36
| | | | | | | | | | | | for NULL RPC client handles. This should hopefully fix the problems Satoshi reported on -current. - Add socket descriptor sanity checks to _yp_unbind(). - Fix yp_order() so that it handles the RPC_PROCUNAVAIL error gracefully. NIS+ in YP compat mode doesn't support the YPPROC_ORDER procedure. This is a 2.2 candidate with bells on.
* In _yp_dobind(), if we find ourselves required to contact the local ypbindwpaul1996-07-131-0/+18
| | | | | | | | | | | | | | | directly in order to obtain binding information, check that the local ypbind is using a reserved port and return YPERR_YPBIND if it isn't. We should not trust any ypbind running on a port >= IPPORT_RESERVED; it may have been started by a malicious user hoping to trick us into talking to a bogus ypserv. Note that we do not check the ypserv port returned to us from ypbind. It is assumed that ypbind has already done a reserved port test (or not, depending on whether or not it was started with -s); if we trust the authenticity of the local ypbind, we should also trust its judgement. Obtained from: OpenBSD
* General -Wall warning cleanup, part I.jkh1996-07-121-2/+2
| | | | Submitted-By: Kent Vander Velden <graphix@iastate.edu>
* Code clean up:jraynard1996-06-041-2/+3
| | | | Changed type of pid from int to pid_t. (Missed one!)
* Code clean up:jraynard1996-06-031-2/+2
| | | | Changed type of pid from int to pid_t.
* Code clean up:jraynard1996-06-031-1/+3
| | | | Added missing headers for system functions.
* Make _yp_dobind() a litle smarter:wpaul1996-06-011-2/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we preserve RPC handles instead of rebuilding them each time a ypcln function is called, we have to be careful about keeping our sockets in a sane state. It's possible that the caller may call a ypclnt function, and then decide to close all its file descriptors. This would also close the socket descriptor held by the yplib code. Worse, it could re-open the same descriptor number for its own use. If it then calls another ypclnt function, the subsequent RPC will fail because the socket will either be gone or replaced with Something Completely Different. The yplib code will recover by rebinding, but it doing so it may wreck the descriptor which now belongs to the caller. To fix this, _yp_dobind() needs to label the descriptor somehow so that it can test it later to make sure it hasn't been altered between ypclnt calls. It does this by binding the socket, thus associating a port number with it. It then saves this port number in the dom_local_port member of the dom_binding structure for the given domain. When _yp_dobind() is called again (which it is at the start of each ypclnt function), it checks to see if the domain is already bound, and if it is, it does a getsockname() on the socket and compares the port number to the one it saved. If the getsockname() fails, or the port number doesn't match, it abandons the socket and sets up a new client handle. This still incurs some syscall overhead, which is what I was trying to avoid, but it's still not as bad as before.
* - Patch around amd core dump problem: don't allow yp_unbind() or _yp_unbind()wpaul1996-05-161-29/+36
| | | | | | | | | | to call clnt_destroy() on a potentially NULL RPC handle. Somebody should bang on this a bit to make sure the problem is really gone; I seem to have difficulty reproducing it. Patch provided by Peter Wemm and slightly tweaked by me. - Don't call _yp_unbind() in individual ypclnt functions unless we encounter an RPC error while making a clnt_call().
OpenPOWER on IntegriCloud