summaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* Correct a bug in the 'allow arbitrary number of socket descriptors' changeswpaul1997-10-141-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | made to the RPC code some months ago. The value of __svc_fdsetsize is being calculated incorrectly. Logically, one would assume that __svc_fdsetsize is being used as a substitute for FD_SETSIZE, with the difference being that __svc_fdsetsize can be expanded on the fly to accomodate more descriptors if need be. There are two problems: first, __svc_fdsetsize is not initialized to 0. Second, __svc_fdsetsize is being calculated in svc.c:xprt_registere() as: __svc_fdsetsize = howmany(sock+1, NFDBITS); This is wrong. If we are adding a socket with index value 4 to the descriptor set, then __svc_fdsetsize will be 1 (since fds_bits is an unsigned long, it can support any descriptor from 0 to 31, so we only need one of them). In order for this to make sense with the rest of the code though, it should be: __svc_fdsetsize = howmany(sock+1, NFDBITS) * NFDBITS; Now if sock == 4, __svc_fdsetsize will be 32. This bug causes 2 errors to occur. First, in xprt_register(), it causes the __svc_fdset descriptor array to be freed and reallocated unnecessarily. The code checks if it needs to expand the array using the test: if (sock + 1 > __svc_fdsetsize). The very first time through, __svc_fdsetsize is 0, which is fine: an array has to be allocated the first time out. However __svc_fdsetsize is incorrectly set to 1, so on the second time through, the test (sock + 1 > __svc_fdsetsize) will still succeed, and the __svc_fdset array will be destroyed and reallocated for no reason. Second, the code in svc_run.c:svc_run() can become hopelessly confused. The svc_run() routine malloc()s its own fd_set array using the value of __svc_fdsetsize to decide how much memory to allocate. Once the xprt_register() function expands the __svc_fdset array the first time, the value for __svc_fdsetsize becomes 2, which is too small: the resulting calculation causes the code to allocate an array that's only 32 bits wide when it actually needs 64 bits. It also uses the valuse of __svc_fdsetsize when copying the contents of the __svc_fdset array into the new array. The end result is that all but the first 32 file descriptors get lost. Note: from what I can tell, this bug originated in OpenBSD and was brought over to us when the code was merged. The bug is still there in the OpenBSD source. Total nervous breakdown averted by: Electric Fence 2.0.5
* Moved `SRCS+= frexp.c' to the correct Makefile.inc.bde1997-10-142-6/+6
| | | | Sorted SRCS.
* Moved `SRCS+= frexp.c' to the correct Makefile.inc.bde1997-10-141-2/+2
|
* Fixed searching of $PATH in execvp(). Do what sh(1) should do accordingbde1997-10-142-26/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | to POSIX.2. In particular: - don't retry for ETXTBSY. This matches what sh(1) does. The retry code was broken anyway. It only slept for several seconds for the first few retries. Then it retried without sleeping. - don't abort the search for errors related to the path prefix, in particular for ENAMETOOLONG, ENOTDIR, ELOOP. This fixes PR1487. sh(1) gets this wrong in the opposite direction by never aborting the search. - don't confuse EACCES for errors related to the path prefix with EACCES for errors related to the file. sh(1) gets this wrong. - don't return a stale errno when the search terminates normally without finding anything. The errno for the last unsuccessful execve() was usually returned. This gave too much precedence to pathologies in the last component of $PATH. This bug is irrelevant for sh(1). The implementation still uses the optimization/race-inhibitor of trying to execve() things first. POSIX.2 seems to require looking at file permissions using stat(). We now use stat() after execve() if execve() fails with an ambiguous error. Trying execve() first may actually be a pessimization, since failing execve()s are fundamentally a little slower than stat(), and are significantly slower when a file is found but has unsuitable permissions or points to an unsuitable interpreter. PR: 1487
* Improve the innetgr() NIS+ compat kludge. We should only fail over to thewpaul1997-10-131-18/+25
| | | | | | | | | | | | 'slow' lookup if we get a YPERR_MAP (no such map in server's domain) error instead of failing over on any error. In the latter case, if the 'fast' search fails legitimately (i.e. the user or host really isn't a member of the specified netgroup) then we end up doing the 'slow' search and failing all over again. The result is still correct, but cycles are consumed for no good reason. Also removed the #ifdef CHARITABLE since the compat kludge is no longer optional.
* Make this file p-make clean. (Use "ld -O foo" instead of "ld; mvasami1997-10-111-11/+6
| | | | | | a.out foo".) Reviewed by: bde (actually more like "Suggested by")
* NIS+ compatibility kludge. A long time ago, I set up innetgr() sowpaul1997-10-111-0/+7
| | | | | | | | | | | | | | that if searching through the special netgroup.byhost or netgroup.byuser maps didn't work, we would roll over to the 'slow' method of grovelling though the netgroup map and working out the dependencies on the fly. But I left this option hidden inside an #ifdef CHARITABLE since I didn't think I'd ever need it. Well, the Sun rpc.nisd NIS+ server in YP compat mode doesn't support the .byhost and .byuser reverse maps, so the failover is necessary in order to be compatible. *sigh* This closes PR #3891, and should be merged into RELENG_2_2.
* Also install pcap-int.h so things can call pcap_compile on arbitarypeter1997-10-101-2/+2
| | | | expressions (eg: in pppd)
* Staticize usage(). Cosmetics.charnier1997-10-101-2/+5
|
* Add the AIO/LIO to libc. They aren't fully done yet, but have been in thedyson1997-10-101-2/+4
| | | | kernel for a few months.
* Remove the claim that UUCP locking were not atomic. It is sincejoerg1997-10-071-13/+1
| | | | revision 1.8 of uucplock.c.
* Add passwd(5) to "SEE ALSO".obrien1997-10-071-1/+2
| | | | | | | ISSUES: An example and better explansion on how to specify a user's login class in /etc/master passwd is needed. (As I don't seem to be specifiying it right, I can't do it).
* Changes to support full make parallelism (-j<n>) in the worldjkh1997-10-052-4/+5
| | | | | | target. Reviewed by: <many different folks> Submitted by: Nickolay N. Dudorov" <nnd@nnd.itfs.nsk.su>
* Merged in better support of ISO 8601 from elsie.nci.nih.gov.helbig1997-10-032-62/+118
| | | | | Added the conversion specifiers %g and %G, that are replaced by the year which contains the greater part of the week in question.
* Teach ftpErrString to format UNIX errnos, since at least ftpLogin()fenner1997-10-021-1/+4
| | | | | | | | | | | can return UNIX errnos. When UNIX errnos catch up with FTP status codes (e.g. at 100) a new way will have to be found to tell which is which. This allows fetch to print errors like fetch: ftp.fu-berlin.de: No route to host instead of fetch: ftp.fu-berlin.de: Unknown error
* Add rudimentary support for using the keyboard.sos1997-10-014-3/+105
|
* Update to tcl8.0 release version.phk1997-10-011-14/+16
|
* Move locks from /etc/opielocks to /var/run/opielocks to keepache1997-10-011-1/+1
| | | | /etc non-writeable as possible
* Correct an ancient bogon which involved trying to read() from ajkh1997-10-011-10/+8
| | | | | | nuked file descriptor. This is probably why sysinstall's ftp xfer occasionally SEGV'd if you left things alone for a long time and the timeout code got called. Whoops!
* Bump minor numberache1997-09-291-1/+3
|
* Sort cross refereces in section SEE ALSO.wosch1997-09-2912-22/+23
|
* Endless loop.wosch1997-09-291-5/+5
| | | | | | | | | | | $ vipw [corrupt a line in editor, exit editor] pwd_mkdb: corrupted entry pwd_mkdb: at line #2 pwd_mkdb: /etc/pw.012585: Inappropriate file type or format re-edit the password file? [y]: n^D^D [hang]
* Add setutent.cache1997-09-291-2/+2
|
* EXT_KEYS gone, STD ommitedache1997-09-291-3/+2
|
* Add logwtmp.cache1997-09-291-2/+2
|
* Mergeache1997-09-291-16/+73
|
* Revert the previous prototype un-typo. Add a brief comment warning thatmsmith1997-09-281-1/+3
| | | | "fixing" it is not a good idea.
* Changes for KTH KerberosIVmarkm1997-09-281-6/+1
|
* Changes for KTH KerberosIV.markm1997-09-282-3/+3
| | | | Also quieten -Wall a bit.
* Typo fixmsmith1997-09-281-1/+1
|
* Fix typo in signal() prototypemsmith1997-09-281-1/+1
|
* Use revived __maskrune for digittointache1997-09-271-2/+2
| | | | Minor formatting
* Add mskanji.cache1997-09-251-1/+1
|
* Move it under XPG4 defineache1997-09-251-0/+2
|
* Move MSKanji under XPG4 defineache1997-09-251-8/+8
|
* __maskrune --> __istypeache1997-09-251-1/+1
|
* Submitted by: Sin'ichiro MIYATANI / Phase One, Inc <siu@phaseone.co.jp>julian1997-09-245-3/+119
| | | | | Basic support for the Shift JIS encoding of japanese. (and one tiny typo fixed in a comment)
* This commit was generated by cvs2svn to compensate for changes in r29747,ache1997-09-232-20/+31
|\ | | | | | | which included commits to RCS files with non-trunk default branches.
| * Official patch from infozipache1997-09-232-20/+31
| |
| * This commit was manufactured by cvs2svn to create branch 'VENDOR-libz'.cvs2svn1996-08-181-0/+35
| |
* | Apply fts() fix from PR#4593peter1997-09-222-2/+2
| | | | | | | | Submitted by: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>
* | Make selection logic more strict. Only select AF_INET loopback interfaceswpaul1997-09-211-3/+6
| | | | | | | | | | that are up on second (loopback only) pass, and only select non-loopback AF_INET interfaces that are up on first pass.
* | Many places in the code NULL is used in integer context, wherephk1997-09-184-6/+6
| | | | | | | | | | | | | | | | | | plain 0 should be used. This happens to work because we #define NULL to 0, but is stylistically wrong and can cause problems for people trying to port bits of code to other environments. PR: 2752 Submitted by: Arne Henrik Juul <arnej@imf.unit.no>
* | environmental -> environment.charnier1997-09-183-4/+4
| |
* | Some adjustments for the resolver use of poll(). For some reason I thoughtpeter1997-09-161-7/+8
| | | | | | | | | | | | | | an unimplemented syscall returned ENOSYS, rather than EINVAL. I have run statically linked code with this wrapper and it does appear to work fine on 2.2-stable which doesn't have poll(). ktrace shows the poll syscall fail once and the fallback to select() working.
* | Put a system call not present checking wrapper around the call topeter1997-09-161-9/+35
| | | | | | | | | | __getcwd(). I've got this libc code running on one of my machines at the moment without the __getcwd() syscall being present.
* | Fix yet a minor stylistic nit from Bruce.wosch1997-09-151-4/+4
| | | | | | | | (`cvs diff -ib' print one new char ;-).
* | Fix yet a minor stylistic nit from Bruce (Doesn't he have morephk1997-09-151-7/+9
| | | | | | | | | | | | important things to do ?? :-) Prepare for the likely case of a change in kernel algorithm.
* | Fix a buglet and a couple of stylistic nits from Bruce.phk1997-09-151-3/+2
| |
* | Potential bufferflow in getpwent(), getpwnam() and getpwuid()wosch1997-09-141-2/+7
| | | | | | | | | | PR: bin/4134 Submitted by: nick@foobar.org
OpenPOWER on IntegriCloud