summaryrefslogtreecommitdiffstats
path: root/lib/libc/xdr/xdr_rec.c
Commit message (Collapse)AuthorAgeFilesLines
* Add an implementation of the RPCSEC_GSS authentication protocol for RPC. Thisdfr2008-08-061-12/+13
| | | | | | | | is based on an old implementation from the University of Michigan with lots of changes and fixes by me and the addition of a Solaris-compatible API. Sponsored by: Isilon Systems Reviewed by: alfred
* Don't assume that there is readable data on the stream after thedfr2008-03-301-0/+6
| | | | fragment header.
* Enable building with LIBC_SCCS defined.obrien2004-10-161-2/+1
| | | | Bug submitted by: Andrea Campi <andrea+freebsd_current@webcom.it>
* Fix amd(8) clients, if a FreeBSD mountd(8) server is used.mbr2003-05-281-9/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Remove the special treatment of non-blocking mode in the "look ahead function" xdrrec_eof(). It currently assumes that the last read() in a row of several reads does not have zero lenght. If this is the case, svc_vc_stat() does return XPRT_MOREREQS, and the RPC-request aborts because there is no data to read anymore. To fix this, go back to the original version of the code for non-blocking mode until NetBSD comes up with another possible fix like this one in xdrrec_eof() if (rstrm->last_frag && rstrm->in_finger == rstrm->in_boundry) { return TRUE; } Return always FALSE in set_input_fragment() for non-blocking mode. Since this was not used in FreeBSD, I omitted it at the first time. Now we use this function and we should always return FALSE for it. Reviewed by: rwatson Approved by: re
* Eliminate 19 warnings in libc (at level WARNS=2) of thenectar2003-02-271-0/+1
| | | | `implicit declaration of function' variety.
* Reset the record lenght and received bytes once a recordmbr2003-01-271-0/+9
| | | | | | | | | | is finished. This fixes clients doing two RPCs over the same connection at the same time. Without this fix, we could end with a reply to old data. Submitted by: Frank van der Linden <fvdl@netbsd.org> Reviewed by: rwatson Obtained from: NetBSD
* Implement non-blocking tcp-connections.mbr2003-01-161-13/+178
| | | | | | Reviewed by: rwatson Obtained from: NetBSD MFC after: 1 day
* Spell void * as void * rather than caddr_t. This is complicated by thedes2002-04-281-5/+5
| | | | | | fact that caddr_t is often misspelled as char *. Sponsored by: DARPA, NAI Labs
* Fix the style of the SCM ID's.obrien2002-03-221-3/+4
| | | | I believe have made all of libc .c's as consistent as possible.
* Remove __P() usage.obrien2002-03-211-18/+18
|
* Bring in a hybrid of SunSoft's transport-independent RPC (TI-RPC) andalfred2001-03-191-116/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | associated changes that had to happen to make this possible as well as bugs fixed along the way. Bring in required TLI library routines to support this. Since we don't support TLI we've essentially copied what NetBSD has done, adding a thin layer to emulate direct the TLI calls into BSD socket calls. This is mostly from Sun's tirpc release that was made in 1994, however some fixes were backported from the 1999 release (supposedly only made available after this porting effort was underway). The submitter has agreed to continue on and bring us up to the 1999 release. Several key features are introduced with this update: Client calls are thread safe. (1999 code has server side thread safe) Updated, a more modern interface. Many userland updates were done to bring the code up to par with the recent RPC API. There is an update to the pthreads library, a function pthread_main_np() was added to emulate a function of Sun's threads library. While we're at it, bring in NetBSD's lockd, it's been far too long of a wait. New rpcbind(8) replaces portmap(8) (supporting communication over an authenticated Unix-domain socket, and by default only allowing set and unset requests over that channel). It's much more secure than the old portmapper. Umount(8), mountd(8), mount_nfs(8), nfsd(8) have also been upgraded to support TI-RPC and to support IPV6. Umount(8) is also fixed to unmount pathnames longer than 80 chars, which are currently truncated by the Kernel statfs structure. Submitted by: Martin Blapp <mb@imp.ch> Manpage review: ru Secure RPC implemented by: wpaul
* Close PR#16028. Make the sanity check saner. The condition that wewpaul2000-01-191-1/+1
| | | | | | | | | check for on the server may arise legitimately on the client. The correct way to check for a zero record length is to check for it without the LAST_FRAG marker in it, since it's legal to send a LAST_FRAG marker with 0 bytes of data. PR: misc/16028
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Change the sanity test here. It's not correct to assume that the recordwpaul1998-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.
* Patch RPC library to avoid possible denial of service attacks as describedwpaul1998-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.
* Resolve conflicts.wpaul1997-05-281-1/+1
|
* Revert $FreeBSD$ to $Id$peter1997-02-221-1/+1
|
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-141-1/+1
| | | | | | | | 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.
* - Missing prototypes, including pointers to functionspeter1996-12-301-50/+51
| | | | | | | | - 64 bit long type safe (wire protocols specified in explicit sized types) - Support systems that don't do unaligned accesses - Support for explicit int16 and int32 sizes in xdr Obtained from: a diff of FreeBSD vs. OpenBSD/NetBSD rpc code.
* minor cleanup, #includes.phk1995-10-221-1/+2
|
* Remove trailing whitespace.rgrimes1995-05-301-13/+13
|
* More directory cleanup after YP merge.wollman1994-08-071-3/+1
|
* Moving RPC stuff into libc, part 2.wollman1994-08-071-0/+586
OpenPOWER on IntegriCloud