summaryrefslogtreecommitdiff
path: root/lib/libc
Commit message (Collapse)AuthorAgeFilesLines
* ``phkmalloc''Poul-Henning Kamp1995-09-163-373/+1123
| | | | | | | | | | Performance is comparable to gnumalloc if you have sufficient RAM, and it screams around it if you don't. Compiled with "EXTRA_SANITY" until further notice. see malloc.3 for more details. Notes: svn path=/head/; revision=10818
* Fix security bugs with a "new approach", using stdio's powerful bufferPeter Wemm1995-09-151-18/+86
| | | | | | | | | | | control hooks. It is similar to an unrolled multi-part snprintf(), in that a "FILE *" is attached to a string buffer. There is also an optimisation for the case where the syslog format string does not contain %m, which should improve performance of "informational" logging, like from ftpd. Notes: svn path=/head/; revision=10794
* Indicate that backlog limit is 32.David Greenman1995-09-151-1/+1
| | | | Notes: svn path=/head/; revision=10788
* getgrent.c: adjust _nextypgroup() slightly so that it continues processingBill Paul1995-09-052-4/+10
| | | | | | | | | | | | | | | | the group map after encountering a badly formatted entry. getpwent.c: same as above for _nextyppass(), and also turn a couple of sprintf()s into snprintf()s to avoid potential buffer overruns. (The other day I nearly went mad because of a username in my NIS database that's actually 9 characters long instead of 8. Stuffing a 9-character username into an 8-character buffer can do some strange things.) (This reminds me: I hope somebody's planning to fix the buffer overrun security hole in syslog(3) before 2.1 ships.) Notes: svn path=/head/; revision=10565
* Clear up a minor bogosity in yp_match(): we have YPMATCHCACHE turnedBill Paul1995-09-021-5/+5
| | | | | | | | | | | | on, which is fine, except that _yp_dobind() is called before we check the cache. The means we can return from the cache check (if we have a hit) without calling _yp_unbind(). We should do the cache check first and _then_ drop into the section that binds the server and does the yp_match query. Notes: svn path=/head/; revision=10522
* getpwent.c: turn the code that checks the override caches into aBill Paul1995-09-023-74/+79
| | | | | | | | | | | | | | | | seperate function to avoid duplication. Also fix getpwent() a small bit to properly handle the case where the magic NIS '+' entry appears before the end of the password file. getgrent.c: be a little more SunOS-ish. Make it look like the NIS group map is 'inserted' at the the point(s) where the magic NIS '+' entry/entries appear. getgrent: fix a file descriptor leak: remember to close the netgroup file after we determine that we're using NIS-only innetgr() lookups. Notes: svn path=/head/; revision=10521
* National date/time representation in syslog logfiles looks ugly,Andrey A. Chernov1995-08-291-2/+1
| | | | | | | | change strftime to ctime. Logfiles must have default (english) date/time representation for access/view from various places. Notes: svn path=/head/; revision=10414
* Remove the CFLAGS+=-I${CURDIR}/net that I previously added.Peter Wemm1995-08-211-1/+0
| | | | | | | | | Since Bruce changed the #include <res_config.h> to #include "res_config.h" this is no longer needed, and only makes the 'make' more verbose for no real reason. Notes: svn path=/head/; revision=10156
* Define DEBUG as 1 instead of as nothing so that it doesn't conflict withBruce Evans1995-08-211-1/+1
| | | | | | | -DDEBUG in libresolv/Makefile. Notes: svn path=/head/; revision=10151
* Fix bogus include paths, some of which stopped libresolv from compiling.Bruce Evans1995-08-216-14/+12
| | | | Notes: svn path=/head/; revision=10150
* Update the resolver part of libc to bind-4.9.3-beta24 level (from beta9p1)Peter Wemm1995-08-209-215/+420
| | | | | | | | | | | Note that this was done by selective patching from diffs, to not conflict with the 4.4bsd base code.. This was *not* a trivial task.. I have been testing this code (apart from cosmetic changes) in my libc for a while now. Obtained from: Paul Vixie <paul@vix.com> Notes: svn path=/head/; revision=10133
* fgetline does not exist.. fgetln is in it's place. Correct the X-Ref.Peter Wemm1995-08-181-1/+1
| | | | | | | Noticed by: Brian Tao, Bruce Evans Notes: svn path=/head/; revision=10100
* There is no such file as /usr/include/ufs/quota.h. There is a fileJoerg Wunsch1995-08-151-1/+1
| | | | | | | | | | | | /usr/include/ufs/ufs/quota (#include <ufs/ufs/quota.h>) that seems to work ok though. Closes PR # docs/670: quotactl man page incorr... Submitted by: evans@scnc.k12.mi.us (Jeffrey Evans) Notes: svn path=/head/; revision=10066
* Submitted by: Bill Fenner <fenner@parc.xerox.com>Bill Paul1995-08-141-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix for PR #510. The original problem was that __ivaliduser() was failing to grant access to a machine listed in a +@netgroup specified in /etc/hosts.equiv, even though the host being checked was most certainly in the +@netgroup. The /etc/hosts.equiv file in question looked like this: localhost +@netgroup The reason for the failure was had to do with gethostbyaddr(). Inside the __ivaliduser() routine, we need to do a gethostbyaddr() in order to get back the actual name of the host we're trying to validate since we're only passed its IP address. The hostname returned by gethostbyaddr() is later passed as an argument to innetgr(). The problem is that __icheckhost() later does a gethostbyname() of its own, which clobbers the buffer returned by gethostbyaddr(). The fix is just to copy the hostname into a private buffer and use _that_ as the 'host' argument that gets passed to innetgr(). And here I was crawling all over the innetgr() code thinking the problem was there. *sigh* Notes: svn path=/head/; revision=10059
* Forget to close fileAndrey A. Chernov1995-08-112-0/+2
| | | | | | | Submitted by: SANETO Takanori sanewo@strg.sony.co.jp Notes: svn path=/head/; revision=10026
* Bump shlib minor because xdr_* functions have been enabled. Do NOTSatoshi Asami1995-08-091-1/+1
| | | | | | | | | | | | | bump it again if something else is added before 2.2. The xdr_* functions are enabled only in the 2.2 (-current) branch so far. If that modification is moved to the 2.1 (-stable) branch, this one should, too. Reviewed by: the mailing lists Notes: svn path=/head/; revision=10012
* Fix _listmatch() so that it doesn't fall off the end of the list string.Bill Paul1995-08-081-6/+5
| | | | Notes: svn path=/head/; revision=9998
* Fix manpage to reflect current sourcesAndrey A. Chernov1995-08-071-21/+49
| | | | Notes: svn path=/head/; revision=9989
* Restore %s format support from previous versionAndrey A. Chernov1995-08-071-1/+22
| | | | Notes: svn path=/head/; revision=9988
* Just when you thought it was safe...Bill Paul1995-08-073-40/+212
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - getnetgrent.c: address some NIS compatibility problems. We really need to use the netgroup.byuser and netgroup.byhost maps to speed up innetgr() when using NIS. Also, change the NIS interaction in the following way: If /etc/netgroup does not exist or is empty (or contains only the NIS '+' token), we now use NIS exclusively. This lets us use the 'reverse netgroup' maps and is more or less the behavior of other platforms. If /etc/netgroup exists and contains local netgroup data (but no '+'). we use only lthe local stuff and ignore NIS. If /etc/netgroup exists and contains both local data and the '+', we use the local data nd the netgroup map as a single combined database (which, unfortunately, can be slow when the netgroup database is large). This is what we have been doing up until now. Head off a potential NULL pointer dereference in the old innetgr() matching code. Also fix the way the NIS netgroup map is incorporated into things: adding the '+' is supposed to make it seem as though the netgroup database is 'inserted' wherever the '+' is placed. We didn't quite do it that way before. (The NetBSD people apparently use a real, honest-to-gosh, netgroup.db database that works just like the password database. This is actually a neat idea since netgroups is the sort of thing that can really benefit from having multi-key search capability, particularly since reverse lookups require more than a trivial amount of processing. Should we do something like this too?) - netgroup.5: document all this stuff. - rcmd.c: some sleuthing with some test programs linked with my own version of innetgr() has revealed that SunOS always passes the NIS domain name to innetgr() in the 'domain' argument. We might as well do the same (if YP is defined). - ether_addr.c: also fix the NIS interaction so that placing the '+' token in the /etc/ethers file makes it seem like the NIS ethers data is 'inserted' at that point. (Chances are nobody will notice the effect of this change, which is just te way I like it. :) Notes: svn path=/head/; revision=9978
* Install non-source files with the optional flag ${COPY}, not with the flag -c.Bruce Evans1995-08-061-1/+1
| | | | Notes: svn path=/head/; revision=9972
* Change `install' to `${INSTALL}' so that default install flags can beBruce Evans1995-08-061-1/+1
| | | | | | | | | | specified in the top level Makefiles. Previously I missed dozens of Makefiles that skip the install after using `cmp -s' to decide that the install isn't necessary. Notes: svn path=/head/; revision=9970
* Fix default %c to be ctime-compatible as supposed (by Solaris too)Andrey A. Chernov1995-08-061-4/+4
| | | | Notes: svn path=/head/; revision=9964
* The European Commission went out and invented a new sort of summer-timeGarrett Wollman1995-08-053-224/+321
| | | | | | | | | changeover, so we have to extend the format of timezone files (in a backward- compatible way, of course). This probably means that libc needs a minor version number bump before 2.2 is released (or maybe not). Notes: svn path=/head/; revision=9936
* Don't depend on bogusly-installed <tzfile.h>.Garrett Wollman1995-08-051-1/+1
| | | | Notes: svn path=/head/; revision=9935
* Fix cut&paste error: LC_COLLATE should be LC_TIMEAndrey A. Chernov1995-08-051-3/+3
| | | | Notes: svn path=/head/; revision=9929
* Add time locale loadingAndrey A. Chernov1995-08-051-0/+8
| | | | Notes: svn path=/head/; revision=9927
* Move rtprio.2 from usr.sbin/rtprio to lib/libc/sys, overwriting the bogusBruce Evans1995-08-051-28/+42
| | | | | | | | | version in the latter directory. Reviewed by: davidg Notes: svn path=/head/; revision=9919
* Implement locale-sensitive strftime () from ADO (heavily modifiedGarrett Wollman1995-08-043-106/+254
| | | | | | | | | | | | | by me). This probably loses for multibyte characters, but I have no way of telling. I'll let ache decide whether to add this support to startup_setlocale. Note that for this to make any sense at all, the symlinks in /usr/share/locale must go. (For the moment, this doesn't make any difference since there are no locales supplied.) Obtained from: Arthur David Olson <ado@elsie.nci.nih.gov> Notes: svn path=/head/; revision=9912
* Reviewed by: David GreenmanBill Paul1995-08-021-14/+4
| | | | | | | | | | | | | | | | | | Back out the 'help NIS rebind faster' hack. This change used a connect()/send() pair rather than the original sendto() to allow RPC to pass ICMP host unreachable and similar errors up to RPC programs that use UDP. This is not a terrible thing by itself, but it can cause trouble in environments with multi-homed hosts: if the portmapper on the multi-homed machine sends a reply with a source address that's different than the one associated with the connection by connect(), the kernel will send a port unreachable message and drop the reply. For the sake of compatibility with everybody else on the planet, it's best to revert to the old behavior. *long, heavy sigh* Notes: svn path=/head/; revision=9853
* Make strtod conforms manpage, use isspace to skip initial whitespacesAndrey A. Chernov1995-08-011-7/+3
| | | | | | | instead of hardcoded whitespaces Notes: svn path=/head/; revision=9846
* Similar changes like in strtol, all this family is VERY brokenAndrey A. Chernov1995-08-015-5/+15
| | | | | | | in 8bit environment (isalpha at the end of digits) Notes: svn path=/head/; revision=9845
* strtol and atoi VERY broken in 8bit chars locale, i.e. if you pass somethingAndrey A. Chernov1995-08-011-1/+3
| | | | | | | | | like 38400<any 8bit char, isalpha> it not detect this stuff and produce very big number instead. Fixed by operating with unsigned char and checking for isascii. (secure/telnetd hits by it f.e.) Notes: svn path=/head/; revision=9843
* Null terminate all strings returned by the dummy uname() routine,Mike Pritchard1995-07-312-18/+26
| | | | | | | | | | and make sure that the version string is somewhat sane. This closes out PR#462. Reviewed by: Bruce Evans Notes: svn path=/head/; revision=9817
* bkr() returns an int, and not a pointer. Document this.Joerg Wunsch1995-07-231-3/+3
| | | | | | | | | | | Closes PR #pending/630. Pointed out by: phk Obtained from: Notes: svn path=/head/; revision=9665
* Confirmed to work by: rcarter@geli.com (Russell Carter)Bruce Evans1995-07-221-4/+1
| | | | | | | | Enable xdr_float.c. I believe it works on i386's although it isn't portable enough to be in a machine-independent directory. Notes: svn path=/head/; revision=9645
* Slight adjustment to previous fix for __ivaliduser(). It was checking forPeter Wemm1995-07-161-2/+4
| | | | | | | | | | | the comment before checking for long lines, so there was a possibility that the wrap-around might be used as an exploitable hostname. Reviewed by: Submitted by: Obtained from: Notes: svn path=/head/; revision=9552
* Make ruserok() accept the #-starting comment lines we used to haveJoerg Wunsch1995-07-161-0/+2
| | | | | | | | | in our default /etc/hosts.equiv. Closes PR #conf/620: Default /etc/hosts.equiv... Notes: svn path=/head/; revision=9539
* The declaration of sigaction was missing a `const'.Bruce Evans1995-07-161-1/+1
| | | | Notes: svn path=/head/; revision=9537
* Fix the synopsis of signal() again. Now it is uglier but correct.Bruce Evans1995-07-161-2/+2
| | | | | | | | (Declarations of signal that don't use typedefs can't be formatted in the standard man page form.) Notes: svn path=/head/; revision=9536
* Fix the prototypes for getservby{name,port}().Joerg Wunsch1995-07-091-2/+2
| | | | | | | | | Closes PR #docs/568: minor manpage bug Submitted by: Michael Smith (email address no longer valid) Notes: svn path=/head/; revision=9459
* The ypprot_err() function incorrectly maps YP_NODOM to YPERR_NODOM.Bill Paul1995-07-051-2/+2
| | | | | | | | | | | | | | | Strange as it sounds, it should map to YPERR_DOMAIN instead. The YP_NODOM protocol error code is generally returned by ypserv when you ask it for data from a domain that it doesn't support. By contrast, the YPERR_NODOM error code means 'local domain name not set.' Consequently, this incorrect mapping leads to yperr_string() generating a very confusing error message. YPERR_DOMAIN says 'couldn't bind to a server which serves this domain' which is much closer to the truth. Notes: svn path=/head/; revision=9403
* Do the same sanity checking in _pw_breakout_yp() that we do inBill Paul1995-06-261-16/+19
| | | | | | | | | | _gr_breakout_yp(): if we encounter a NULL pointer generated as the result of a badly formatted NIS passwd entry (e.g. missing fields), we punt and return an error code, thereby silently skipping the bad entry. Notes: svn path=/head/; revision=9332
* Fix for a potential problem reported by a user I bumped into on IRCBill Paul1995-06-261-9/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | last night: _gr_breakout_yp() doesn't check for badly formatted NIS group entries. For example, a bogus entry like this: bootp::user1,user2,user3 will lead to a null pointer dereference and a SEGV (note that the GID field is missing -- this results in one of the strsep(&result, ":") returning NULL). The symtpom of this problem is programs dumping core left and right the moment you add a + entry to /etc/group. Note that while this is similar to an earlier bug, it's caused by a different set of circumstances. The fix is to check for the NULL pointers and have _gr_breakout_yp() punt and return a failure code if it catches one. This is more or less the behavior of SunOS: if a bad NIS group entry is encountered, it's silently ignored. I don't think our standard (non-NIS) group parsing code behaves the same way. It doesn't crash though, so I'm citing the 'it ain't broken, don't fix it' rule and leaving it alone. I'll probably have to add similar checks to _pw_breakout_yp() in getpwent.c to ward off the same problems. It's rare that bad NIS map entries like this occur, but we should handle them gracefully when they do. Notes: svn path=/head/; revision=9331
* Fixes for PR #508 and #509 ('botched 'Bad netgroup' error message' andBill Paul1995-06-231-7/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'cycle in netgroup check too greedy'). PR #508 is apparently due to an inconsistency in the way the 4.4BSD netgroup code deals with bad netgroups. When 4.4BSD code encounters a badly formed netgroup entry (e.g. (somehost,-somedomain), which, because of the missing comma between the '-' and 'somedomain,' has only 2 fields instead of 3), it generates an error message and then bails out without doing any more processing on the netgroup containing the bad entry. Conversely, every other *NIX in the world that usees netgroups just tries to parse the entry as best it can and then silently continues on its way. The result is that two bad things happen: 1) we ignore other valid entries within the netgroup containing the bogus entry, which prevents us from interoperating with other systems that don't behave this way, and 2) by printing an error to stderr from inside libc, we hose certain programs, in this case rlogind. In the problem report, Bill Fenner noted that the 'B' from 'Bad' was missing, and that rlogind exited immediately after generating the error. The missing 'B' is apparently not caused by any problem in getnetgrent.c; more likely it's getting swallowed up by rlogind somehow, and the error message itself causes rlogind to become confused. I was able to duplicate this problem and discovered that running a simple test program on my FreeBSD system resulted in a properly formatted (if confusing) error, whereas triggering the error by trying to rlogin to the machine yielded the missing 'B' problem. Anyway, the fixes for this are as follows: - The error message has been reformatted so that it prints out more useful information (e.g. Bad entry (somehost,-somedomain) in netgroup "foo"). We check for NULL entries so that we don't print '(null)' anymore too. :) - Rearranged things in parse_netgrp() so that we make a best guess at what bad entries are supposed to look like and then continue processing instead of bailing out. - Even though the error message has been cleaned up, it's wrapped inside a #ifdef DEBUG. This way we match the behavior of other systems. Since we now handle the error condition better anyway, this error message becomes less important. PR #507 is another case of inconsistency. The code that handles duplicate/circular netgroup entries isn't really 'too greedy; -- it's just too noisy. If you have a netgroup containing duplicate entries, the code actually does the right thing, but it also generates an error message. As with the 'Bad netgroup' message, spewing this out from inside libc can also hose certain programs (like rlogind). Again, no other system generates an error message in this case. The only change here is to hide the error message inside an #ifdef DEBUG. Like the other message, it's largely superfluous since the code handles the condition correctly. Note that PR #510 (+@netgroup host matching in /etc/hosts.equiv) is still being investigated. I haven't been able to duplicate it myself, and I strongly suspect it to be a configuration problem of some kind. However, I'm leaving all three PRs open until I get 510 resolved just for the sake of paranoia. Notes: svn path=/head/; revision=9287
* Don't cast void functions to void.Jeffrey Hsu1995-06-204-7/+7
| | | | | | | Obtained from: NetBSD commit by jtc on June 16, 1995. Notes: svn path=/head/; revision=9272
* Make _havemaster() use yp_first() (again) instead of yp_order() toBill Paul1995-06-171-2/+6
| | | | | | | | ward off possible NIS+ evil. (I might be overly paranoid with this, but it doesn't hurt, so...) Notes: svn path=/head/; revision=9250
* Add /usr/local/share/nls to default search pathAndrey A. Chernov1995-06-171-2/+2
| | | | Notes: svn path=/head/; revision=9245
* Merge RELENG_2_0_5 into HEADRodney W. Grimes1995-06-111-0/+9
| | | | Notes: svn path=/head/; revision=9202
* Remove trailing whitespace.Rodney W. Grimes1995-05-30128-720/+727
| | | | Notes: svn path=/head/; revision=8870