aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/rpc/svc.c
Commit message (Collapse)AuthorAgeFilesLines
* General further adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-201-0/+2
| | | | | | | | | | | | | | | | | Mainly focus on files that use BSD 3-Clause license. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Special thanks to Wind River for providing access to "The Duke of Highlander" tool: an older (2014) run over FreeBSD tree was useful as a starting point. Notes: svn path=/head/; revision=326025
* Support clnt_raw's use of FD_SETSIZE as a fake file descriptor.Brooks Davis2017-05-011-4/+6
| | | | | | | | | | | | | | | | | | | Accomplish this by allocating space for it in __svc_xports and allowing it to be registered. The failure to allocate space was causing an out-of-bounds read in svc_getreq_common(). The failure to register caused PR 211804. The bug was found with CHERI bounds checking. PR: 211804 Obtained from: CheriBSD Sponsored by: DARPA, AFRL Reviewed by: ngie MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D10528 Notes: svn path=/head/; revision=317660
* libc: spelling fixes.Pedro F. Giffuni2016-04-301-1/+1
| | | | | | | Mostly on comments. Notes: svn path=/head/; revision=298830
* Remove unnecessary `if (x)` tests before calling `free(x)`; free(3)Enji Cooper2015-11-021-4/+2
| | | | | | | | | | already employs this check MFC after: 2 weeks Sponsored by: EMC / Isilon Storage Division Notes: svn path=/head/; revision=290253
* Use ANSI C prototypes.Craig Rodrigues2015-09-201-69/+31
| | | | | | | Eliminates gcc 4.9 warnings. Notes: svn path=/head/; revision=288017
* Move definitions out of rpc_com so that the linker doesn't complain aboutDavid Chisnall2014-04-061-0/+3
| | | | | | | | | multiple definitions. Reported by: sbruno Notes: svn path=/head/; revision=264196
* Replace Sun RPC license in TI-RPC library with a 3-clause BSD license,Hiroki Sato2013-11-251-26/+25
| | | | | | | with the explicit permission of Sun Microsystems in 2009. Notes: svn path=/head/; revision=258578
* Fix several memory and lock leaks on the out of memory condition.Konstantin Belousov2012-04-281-1/+9
| | | | | | | | Reported by: Matt Miller <matt matthewjmiller net> MFC after: 1 week Notes: svn path=/head/; revision=234769
* The fd_mask type is an unsigned long, not an int, so treat the mask as aJohn Baldwin2009-12-031-2/+2
| | | | | | | | | | | | | long instead of an int when examining the results of select() to look for RPC requests. Previously this routine would ignore RPC requests to sockets whose file descriptor mod 64 was greater than 31 on a 64-bit platform. PR: amd64/141130 Submitted by: liujb of array networks MFC after: 3 days Notes: svn path=/head/; revision=200061
* Initialise the SVCAUTH field for new transport structures when they areDoug Rabson2008-09-091-0/+1
| | | | | | | | | | allocated instead of waiting for the first request. This fixes an issue with rpcbind's support for PMAPPROC_CALLIT. Reviewed by: markm Notes: svn path=/head/; revision=182891
* Add an implementation of the RPCSEC_GSS authentication protocol for RPC. ThisDoug Rabson2008-08-061-10/+48
| | | | | | | | | | | 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 Notes: svn path=/head/; revision=181344
* Staticize a couple of functions.Daniel Eischen2006-02-271-3/+1
| | | | | | | | | Remove a few unused locks. Remove locks from application namespace. Notes: svn path=/head/; revision=156090
* Try to bring some sanity to the SCM ID's.David E. O'Brien2004-10-161-1/+1
| | | | | | | | | + spell LIBC_SCCS consistently + enable builds with LIBC_SCCS defined to not syntax error + minor SCM reformatting to try to have some consistency Notes: svn path=/head/; revision=136581
* Implement non-blocking tcp-connections.Martin Blapp2003-01-161-16/+51
| | | | | | | | | Reviewed by: rwatson Obtained from: NetBSD MFC after: 1 day Notes: svn path=/head/; revision=109359
* Spell void * as void * rather than caddr_t. This is complicated by theDag-Erling Smørgrav2002-04-281-3/+3
| | | | | | | | | fact that caddr_t is often misspelled as char *. Sponsored by: DARPA, NAI Labs Notes: svn path=/head/; revision=95658
* Fix the style of the SCM ID's.David E. O'Brien2002-03-221-3/+4
| | | | | | | I believe have made all of libc .c's as consistent as possible. Notes: svn path=/head/; revision=92990
* Remove multi-line __P() usage.David E. O'Brien2002-03-221-2/+2
| | | | Notes: svn path=/head/; revision=92941
* Remove __P() usage.David E. O'Brien2002-03-211-3/+3
| | | | Notes: svn path=/head/; revision=92905
* Move the #includes of reentrant.h to after the `#include "namespace.h"',Ian Dowse2001-04-021-1/+1
| | | | | | | | | | | so that the underscored versions of the pthread functions get declared. This removes around 300 lines of 'implicit declaration of XXX' warnings from the output of a libc build with -Wall. Reviewed by: Martin Blapp <mb@imp.ch>, alfred Notes: svn path=/head/; revision=75094
* Bring in a hybrid of SunSoft's transport-independent RPC (TI-RPC) andAlfred Perlstein2001-03-191-175/+398
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=74462
* Remove _THREAD_SAFE and make libc thread-safe by default byDaniel Eischen2001-01-241-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 Notes: svn path=/head/; revision=71579
* $Id$ -> $FreeBSD$Peter Wemm1999-08-281-1/+1
| | | | Notes: svn path=/head/; revision=50476
* Correct a bug in the 'allow arbitrary number of socket descriptors' changesBill Paul1997-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 Notes: svn path=/head/; revision=30420
* Resolve conflicts.Bill Paul1997-05-281-3/+1
| | | | | | | | | | | | | | This concludes tonight's entertainment. Once I'm sure I haven't destroyed the world with all these changes, I'll import the utilities. Everything should continue to work as before. If it doesn't let me know. Special thanks to Mark Murray for running a test 'make world' for me to shake out the bugs, which, hopefully, I have fixed. (And there was much rejoicing.) Notes: svn path=/head/; revision=26221
* Revert $FreeBSD$ to $Id$Peter Wemm1997-02-221-1/+1
| | | | Notes: svn path=/head/; revision=22993
* Make the long-awaited change from $Id$ to $FreeBSD$Jordan K. Hubbard1997-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. Notes: svn path=/head/; revision=21673
* Eliminate unnecessary warning introduced by a missing forward declaration.Jordan K. Hubbard1997-01-011-1/+3
| | | | Notes: svn path=/head/; revision=21165
* prototype of shared function now in include filePeter Wemm1996-12-311-3/+1
| | | | Notes: svn path=/head/; revision=21128
* - major overhaul to make this deal with unlimited fd's.Peter Wemm1996-12-301-56/+68
| | | | | | | | | | | | | | | - kill non-FD_SETSIZE code Obtained from: a diff of FreeBSD vs. OpenBSD/NetBSD rpc code. Note, there was a nasty bug with our old code here. It would trash the stack if a fd > 31 was passed in. It was using a "long" as though it was an "fd_set", ie: it was assuming that a long was 256 bits wide. :-( This has been lurking here for a while, since the FD_SETSIZE #ifdef's were first implemented. Notes: svn path=/head/; revision=21087
* clear various struct sockaddr_in's on stack, set sin_len.Peter Wemm1996-08-121-1/+2
| | | | | | | (Noticed when comparing to OpenBSD source) Notes: svn path=/head/; revision=17540
* Code cleanup:James Raynard1996-06-111-2/+2
| | | | | | | | | | | Fixed a couple of nitpick warnings, plus one that slipped through the net earlier. This directory now compiles without any warnings with -Wall! (Until the next gcc upgrade...) Notes: svn path=/head/; revision=16302
* Code cleanup (part two):James Raynard1996-06-101-3/+3
| | | | | | | | | | | | | | | 1. Added missing function prototypes. 2. Added missing function return types. 3. Added missing function argument types. 4. Added missing headers for system function prototypes. 5. Corrected casts in select() args. 6. Got rid of more "extern int errno" rubbish. 7. Added extra parentheses around assignment used as truth value. 8. Fixed bug in clnt_{tcp, udp}create() where pointers could be free'd even if they hadn't been successfully malloc()'d. Notes: svn path=/head/; revision=16270
* Well, cvs commit core'ed on me, I belive I have got all the locks out,Poul-Henning Kamp1995-10-221-1/+3
| | | | | | | | | | | | | | | | | | | | | | but a commit mail got lost, it's the same as for this commit: lib/libc/gen confstr.c crypt.c disklabel.c fstab.c getcap.c getgrent.c getgrouplist.c getpass.c getpwent.c initgroups.c nlist.c psignal.c pwcache.c setmode.c sleep.c sysconf.c sysctl.c syslog.c usleep.c lib/libc/locale none.c read_runemagi.c setlocale.c lib/libc/net gethostbydns.c getnetbydns.c getnetbynis.c lib/libc/nls msgcat.c lib/libc/quad Makefile.inc lib/libc/regex engine.c regcomp.c regerror.c Minor cleanup, mostly unused vars and missing #includes. Limit the number of quad functions we pull in for 'i386'. I still belive the quad stuff should go back into gcc. Add compile-time warnings about crypt functions. Notes: svn path=/head/; revision=11666
* Remove trailing whitespace.Rodney W. Grimes1995-05-301-33/+33
| | | | Notes: svn path=/head/; revision=8870
* Moving Sun RPC code into libc, part 1. Based on work done by a number ofGarrett Wollman1994-08-071-0/+481
people, including J.T. Conklin, Theo de Raadt, Paul Richards, and probably someone else who's going to flame me as soon as they see this message. Notes: svn path=/head/; revision=1901