summaryrefslogtreecommitdiff
path: root/lib/libc
Commit message (Collapse)AuthorAgeFilesLines
* The incorrect select() timeout calculation that I fixed in svc_tcp.cBill Paul1998-05-211-2/+2
| | | | | | | | also exists here (the timeout can expire much sooner than it's supposed to). Notes: svn path=/head/; revision=36280
* Change the sanity test here. It's not correct to assume that the recordBill Paul1998-05-201-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | size we receive here should fit into the receive buffer. Unfortunately, there's no 100% foolproof way to distinguish a ridiculously large record size that a client actually meant to send us from a ridiculously large record size that was sent as a spoof attempt. The one value that we can positively identify as bogus is zero. A zero-sized record makes absolutely no sense, and sending an endless supply of zeroes will cause the server to loop forever trying to fill its receive buffer. Note that the changes made to readtcp() make it okay to revert this sanity test since the deadlock case where a client can keep the server occupied forever in the readtcp() select() loop can't happen anymore. This solution is not ideal, but is relatively easy to implement. The ideal solution would be to re-arrange the way dispatching is handled so that the select() loop in readtcp() can be eliminated, but this is difficult to implement. I do plan to implement the complete solution eventually but in the meantime I don't want to leave the RPC library totally vulnerable. That you very much Sun, may I have another. Notes: svn path=/head/; revision=36257
* Replace the getpublickey() stub with the real thing.Bill Paul1998-05-181-33/+160
| | | | Notes: svn path=/head/; revision=36165
* Improve DoS avoidance in RPC stream oriented transports. The TCP transportBill Paul1998-05-182-34/+70
| | | | | | | | | | | | | | | | | | | | | | | | | uses readtcp() to gather data from the network; readtcp() uses select(), with a timeout of 35 seconds. The problem with this is that if you connect to a TCP server, send two bytes of data, then just pause, the server will remain blocked in readtcp() for up to 35 seconds, which is sort of a long time. If you keep doing this every 35 seconds, you can keep the server occupied indefinitely. To fix this, I modified readtcp() (and its cousin, readunix() in svc_unix.c) to monitor all service transport handles instead of just the current socket. This allows the server to keep handling new connections that arrive while readtcp() is running. This prevents one client from potentially monopolizing a server. Also, while I was here, I fixed a bug in the timeout calculations. Someone attempted to adjust the timeout so that if select() returned EINTR and the loop was restarted, the timeout would be reduced so that rather than waiting for another 35 seconds, you could never wait for more than 35 seconds total. Unfortunately, the calculation was wrong, and the timeout could expire much sooner than 35 seconds. Notes: svn path=/head/; revision=36156
* kill.1: Remove reference to obsolete sigvec(2) man page. RemovedJoseph Koshy1998-05-181-2/+1
| | | | | | | | | | self reference in sigaction(2) man page. Submitted by: Josh Gilliam <josh@quick.net> PR: 6617 Notes: svn path=/head/; revision=36143
* Patch RPC library to avoid possible denial of service attacks as describedBill Paul1998-05-151-1/+7
| | | | | | | | | | | | | | | recently in BUGTRAQ. The set_input_fragment() routine in the XDR record marking code blindly trusts that the first two bytes it sees will in fact be an actual record header and that the specified size will be sane. In fact, if you just telnet to a listening port of an RPC service and send a few carriage returns, set_input_fragment() will obtain a ridiculously large record size and sit there for a long time trying to read from the network. A sanity test is required: if the record size is larger than the receive buffer, punt. Notes: svn path=/head/; revision=36087
* Patch RPC library to avoid possible denial of service attacks as describedBill Paul1998-05-152-2/+4
| | | | | | | | | recently in BUGTRAQ. If a stream oriented transport fails to properly decode an RPC message header structure where there should be one, it should mark the stream as dead so that the connection will be dropped. Notes: svn path=/head/; revision=36086
* Remove a big hack after adding a small one to libc/gen/getcwd.c toJohn Birrell1998-05-152-232/+2
| | | | | | | handle the lack of __getcwd syscall in NetBSD. Notes: svn path=/head/; revision=36061
* NetBSD doesn't have a __getcwd syscall, so set have__getcwd to `no'John Birrell1998-05-151-0/+4
| | | | | | | when building libc with NetBSD syscalls. Notes: svn path=/head/; revision=36060
* int -> long changes that reduce the diffs with the NetBSD version toJohn Birrell1998-05-142-34/+34
| | | | | | | work in a 64-bit environment. Notes: svn path=/head/; revision=36043
* Remove reference to signanosleepAndrey A. Chernov1998-05-141-1/+0
| | | | Notes: svn path=/head/; revision=36039
* Nuke signanosleep()Peter Wemm1998-05-142-21/+3
| | | | Notes: svn path=/head/; revision=36037
* Cast a pointer to a long, not an int and make the arg passed to the functionJohn Birrell1998-05-111-2/+2
| | | | | | | a long too (it does have a proper prototype). Notes: svn path=/head/; revision=35941
* Cast a pointer to a long, not an int before masking it.John Birrell1998-05-101-1/+1
| | | | Notes: svn path=/head/; revision=35923
* Remove 'of type long' from a sentence talking about four 4-byte valuesJohn Birrell1998-05-101-2/+1
| | | | | | | because that is wrong on alpha. Notes: svn path=/head/; revision=35922
* Fixed the usual missing dependencies on headers generated by rpcgen.Bruce Evans1998-05-101-2/+2
| | | | Notes: svn path=/head/; revision=35908
* Fixed the usual missing dependencies on headers generated by rpcgen.Bruce Evans1998-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. Notes: svn path=/head/; revision=35898
* Add a BUGS section and describe a problem I've been having forBrian Somers1998-05-091-1/+14
| | | | | | | a few weeks now. Notes: svn path=/head/; revision=35897
* This is a hack to workaround source that is coded to use long variablesJohn Birrell1998-05-082-2/+2528
| | | | | | | | | | | | | but also assumes that they are 32-bits. This is one place where I don't think it is appropriate to change 'long' to 'int'. I don't see why the code couldn't be fixed so that using natural long variables does the right thing. It's spaggetti code so it'll take some effort. Obviously NetBSD thought so too because they change 'long' to 'int32_t' etc and left it at that. As a temporary measure FreeBSD/Alpha can use the NetBSD code and put this on the list of things to fix. Notes: svn path=/head/; revision=35837
* Remote the NetBSD kludge for vfprintf.cJohn Birrell1998-05-081-9/+2
| | | | Notes: svn path=/head/; revision=35836
* Don't assign the va_list variable 'ap' directly to the argtable becauseJohn Birrell1998-05-081-19/+18
| | | | | | | | va_list is not a pointer on alpha. Instead, use the va_arg() macro to return the address that is stored in the argtable. Notes: svn path=/head/; revision=35835
* Use the thread-aware errno definition all the time.John Birrell1998-05-052-44/+6
| | | | Notes: svn path=/head/; revision=35762
* Build the syscalls (in libc, not libc_r) with weak symbols so thatJohn Birrell1998-05-052-6/+18
| | | | | | | libpthread can override them as required. Notes: svn path=/head/; revision=35761
* Remove extern int errno and #include <errno.h> to get the proper definition.John Birrell1998-05-051-1/+1
| | | | Notes: svn path=/head/; revision=35760
* Remove leading underscores from the FILE lock functions that POSIXJohn Birrell1998-05-051-3/+3
| | | | | | | specifies. Notes: svn path=/head/; revision=35759
* Remove leading underscores for the functions (weak symbols here) thatJohn Birrell1998-05-051-4/+7
| | | | | | | POSIX defines. Notes: svn path=/head/; revision=35757
* In a threaded library, expect the lock field to be declared volatile,John Birrell1998-05-051-5/+5
| | | | | | | | so provide function prototypes that respect that, avoiding a gcc warning that `volatile' is being thrown away. Notes: svn path=/head/; revision=35753
* Fix a few nits in quoted code fragments and elsewhere.Robert Nordier1998-05-041-5/+4
| | | | Notes: svn path=/head/; revision=35726
* Typo fix.James Raynard1998-05-031-2/+2
| | | | Notes: svn path=/head/; revision=35656
* Pedantry (NULL -> NUL).James Raynard1998-05-031-1/+1
| | | | Notes: svn path=/head/; revision=35655
* Don't imply sigset_t == int.James Raynard1998-05-031-1/+1
| | | | Notes: svn path=/head/; revision=35654
* Resolve some unexpected differences when comparing with the 2.2 version.Peter Wemm1998-05-021-2/+10
| | | | | | | | | One bug was relatively harmless (select's timeout had an uninitialized tv_usec), the other I'm not so sure.. (neglected to catch select returns less than zero). Both of these were irrelevant on kernels with poll(). Notes: svn path=/head/; revision=35624
* Update libc dns code to 4.9.7-T1B level. This involved chopping out largePeter Wemm1998-05-023-249/+753
| | | | | | | | | chunks of res_comp.c and replacing it with chunks of bind-8.1.1's resolver code. (There are no interface changes though) The other parts are better bounds checking related. Notes: svn path=/head/; revision=35623
* Go back to version 1.16 - it was correct the way it was.Brian Somers1998-05-011-6/+6
| | | | | | | Pointed out by: bde Notes: svn path=/head/; revision=35607
* Fixed disordering and other style bugs in rev.1.50.Bruce Evans1998-05-011-6/+4
| | | | Notes: svn path=/head/; revision=35592
* connect() returns -1 on error - not 0.Brian Somers1998-05-011-7/+7
| | | | Notes: svn path=/head/; revision=35570
* Add reference to setlocale(3)Andrey A. Chernov1998-04-301-2/+3
| | | | Notes: svn path=/head/; revision=35556
* Add reference to catopen(3)Andrey A. Chernov1998-04-301-1/+4
| | | | Notes: svn path=/head/; revision=35555
* Return -1 for invalid descriptor in catcloseAndrey A. Chernov1998-04-301-2/+2
| | | | Notes: svn path=/head/; revision=35552
* If passed catgets descriptor is NULL or -1, return default string immediatelyAndrey A. Chernov1998-04-301-1/+3
| | | | Notes: svn path=/head/; revision=35550
* Force loadType to 0Andrey A. Chernov1998-04-301-5/+4
| | | | Notes: svn path=/head/; revision=35549
* Implement NL_CAT_LOCALEAndrey A. Chernov1998-04-304-12/+33
| | | | | | | Manpages cleanup Notes: svn path=/head/; revision=35548
* Prototypes/typedefs cleanupAndrey A. Chernov1998-04-302-21/+22
| | | | | | | Fix error return codes Notes: svn path=/head/; revision=35546
* Oops, backout the previous change having confused my underscores.John Birrell1998-04-302-6/+4
| | | | | | | | | __thread_create is a syscall that uses the default asm. It is _thread_create that contains specific asm code, but that lives in libpthread. Notes: svn path=/head/; revision=35544
* Change the description of errno to match the thread-aware implementationJohn Birrell1998-04-301-32/+6
| | | | | | | | from 3.0 on. With 3.0 being a major release, now is a good time to do this. Notes: svn path=/head/; revision=35543
* Make cerror thread aware by calling __error() to get a pointer to theJohn Birrell1998-04-302-44/+10
| | | | | | | | thread-specific error variable. This change make libc use the same cerror code that libc_r has been using. Notes: svn path=/head/; revision=35541
* The syscall that creates a kernel thread is coming, but it doesn't use theJohn Birrell1998-04-302-8/+6
| | | | | | | | | default syscall asm, so add it to NOASM. The other syscalls that manipulate kernel threads use the default asm code, so they just get built automatically. Notes: svn path=/head/; revision=35540
* Build __error.c into libc, but not libc_r. The weak symbol in theJohn Birrell1998-04-301-2/+7
| | | | | | | | | | | | | file works with libpthread, but when built into libc_r which has a non-weak symbol of the same name, the linker behaves unpredicatably and sometimes links the wrong symbol. The linker behaviour is a byproduct of what the program calls from object to object so it is like winning a lottery if the program actually works. The odds are quite good - 95:1, I think. We need a sure thing, though, so weak symbols can't be used instead of renaming things. Notes: svn path=/head/; revision=35539
* Basic support for LC_MESSAGESAndrey A. Chernov1998-04-292-12/+13
| | | | Notes: svn path=/head/; revision=35523
* Stop renaming these in libc_r because wrappered versions don't make sense.John Birrell1998-04-296-60/+12
| | | | | | | PR: i386/4826, bin/5953 Notes: svn path=/head/; revision=35504