Since YP protocol definition uses the constant to declare
variable-size opaque byte strings, the change should be binary
compatible with existing installations which do not expose keys or
values larger than 1024 bytes.
All uses of local variables with YPMAXRECORD sizes were removed to
avoid insane stack use. On the other hand, variables with static
lifetime should be fine and only result in increased VA use.
Glibc made same change, increasing the allowed length for keys and
values in YP to 16M, in 2013.
Reviewed by: markj
Discussed with: ian
Sponsored by: Mellanox Technologies
MFC after: 3 weeks
Differential revision: https://reviews.freebsd.org/D20900
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.
Initially, only tag files that use BSD 4-Clause "Original" license.
RelNotes: yes
Differential Revision: https://reviews.freebsd.org/D13133
incorrect reentrant calls to the libc memory manager).
Add missing error handling:
* for an incoming response with an incorrect tid;
* for a failure to register the response RPC program,
Fix error handling for failure to malloc job descriptor (this needs to
be done before the transient RPC program is registered).
PR: bin/102143
MFC after: 2 weeks
attempt to clear its pending jobs list, as this could trigger another
signal, and cause an infinite recursion. What yppush_exit() tests
in order to determine whether to flush pending jobs is the
yppush_joblist chained list, so this is what needs to be cleared
in that case (not the yppush_jobs counter).
Reviewed by: audit@ (no objection)
MFC after: 2 weeks
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
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.
- Remove unused 'pid' member from the jobs structure. (This was left over
from an earlier incarnation of the program that used multiple processes.)
- Remove #ifdef'ed longjmp() stuff.
- Print warning message if the 'pushing' host is not the master for
a map being pushed but don't bail out. (While yppush should only
be used on an NIS master, using it elsewhere is not an unpardonable sin.)
yppush.8:
- Fix a couple of mind-os.
Makefile
- Change format to hopefully ease bootstrapping. (Suggested by wollman.)
Other Makefiles should follow.
- Don't do longjmp()s from inside a signal handler. Even though I got
things to work the way I wanted, it's bad karma.
- Remember to clear the sa_mask with sigemptyset() before masking signals
when using sigaction() to set up the SIGIO handler.
- Break out of the wait loop in yppush_exit() when the five minute
timeout expires instead of looping around for another pass. If ypxfr
on the other end fails somehow and never sends a response, we don't
want to wait around forever.
This program does what the old one did, PLUS:
- Supports parallel jobs (like the SunOS yppush)
- Does everything in one proces instead of fork()ing off
children processes as callback listeners (this is done
using async socket I/O).
- Can be used to transmit maps to user-specified hosts.
- Has a much more verbose verbose option.
- Reuses existing code from ypserv and ypxfr.
- Uses some rpcgen-erated code as well.
- Isn't fattening. :)
Note that this is going in /usr/sbin rather than /usr/bin like
the old one. yppush is an administrative command it it's anything.