Commit Graph

923 Commits

Author SHA1 Message Date
joerg
a320139a35 Minor corrections. The second parameter is actually of type int
(though only char will be used), and our implementation is not really
worse than the SysV one, so there's no need to claim so in the BUGS
section.
1996-06-03 10:40:39 +00:00
phk
3b816e03a0 backout yacc changes 1996-06-02 17:10:13 +00:00
phk
d95016fb8a backup yacc changes 1996-06-02 17:08:32 +00:00
bde
cbb7e33d7c Clean up the FP stack before returning. The i387 exp() leaked an FP
register on its first call.  Subsequent calls reused the register so
the leak didn't accumulate.  Fixes PR 1275.
1996-06-01 18:00:07 +00:00
wpaul
469d167428 Make _yp_dobind() a litle smarter:
Now that we preserve RPC handles instead of rebuilding them each time
a ypcln function is called, we have to be careful about keeping our sockets
in a sane state. It's possible that the caller may call a ypclnt
function, and then decide to close all its file descriptors. This would
also close the socket descriptor held by the yplib code. Worse, it
could re-open the same descriptor number for its own use. If it then calls
another ypclnt function, the subsequent RPC will fail because the socket
will either be gone or replaced with Something Completely Different. The
yplib code will recover by rebinding, but it doing so it may wreck the
descriptor which now belongs to the caller.

To fix this, _yp_dobind() needs to label the descriptor somehow so
that it can test it later to make sure it hasn't been altered between
ypclnt calls. It does this by binding the socket, thus associating a port
number with it. It then saves this port number in the dom_local_port member
of the dom_binding structure for the given domain. When _yp_dobind() is
called again (which it is at the start of each ypclnt function), it checks
to see if the domain is already bound, and if it is, it does a getsockname()
on the socket and compares the port number to the one it saved. If the
getsockname() fails, or the port number doesn't match, it abandons the
socket and sets up a new client handle.

This still incurs some syscall overhead, which is what I was trying to
avoid, but it's still not as bad as before.
1996-06-01 05:08:31 +00:00
wpaul
f96a6bec7f Improve NIS performace of getservbyname() and getservbyport(). Both these
functions are implimented as wrappers around getservent(), which means it's
up to getservent() to do all the work. The NIS support in getservent()
only allows it to scan through the services.byname map one entry at a
time until it finds the requested service name/port. This can be painfully
slow due to the overhead involved (lots and lots of successive RPCs).

To fix this, we allow getservbyname() and getservbyport() to signal
getservent() that if NIS is turned on (there's a '+' in /etc/services),
the usual yp_first()/yp_next() linear search should be abandoned and
yp_match() used instead. This causes getservent() to immediately
locate the requested entry instead of wasting time groping through the
whole map.

The downside is that this trick is accomplished by exporting a couple of
pointers from getservent.c which getservbyname.c and getservbyport.c can
preset in order to tell getservent() what to do. If all three functions
were in the same source module, then the extra cruft could be delcared
static to avoid poluting the global symbol space. Maybe they should be
combined anyway. For now I've settled on prepending lots of underscores.
1996-06-01 04:40:42 +00:00
peter
3259f4bdca Use the setsockopt for IP_PORTRANGE to cause rresvport() to allocate a
privileged port within a single bind(), rather than looping through
attempts to bind over and over again over progressively lower ports.

This should speed up rlogin/rsh etc, and will probably cure some of the
strange rlogin hangs that have been reported in the past where rresvport()
managed to bind() to a port address that it shouldn't have.
1996-05-31 04:00:21 +00:00
phk
3203743c60 yacc rule change. 1996-05-30 23:01:04 +00:00
phk
bc3dcb1c92 yacc rule change. 1996-05-30 22:54:10 +00:00
jkh
37deb9b657 Fix bogus MLINKS line from vasprintf change. 1996-05-29 05:00:12 +00:00
wosch
55faaca1d9 add manpage links
asprintf.3 -> printf.3
vasprintf -> printf.3
1996-05-29 01:00:00 +00:00
wosch
5998b03d0f add manpage links:
des_setkey.3 -> crypt.3
des_cipher.3 -> crypt.3
err_set_exit.3 -> err.3
err_set_file.3 -> err.3
strunvis.3 -> unvis.3
1996-05-29 00:57:19 +00:00
jdp
a0b884c252 Correct two errors in the manual page. 1996-05-28 18:57:31 +00:00
phk
5f845e903b Use ld -O insted of ld -o + mv. 1996-05-28 16:24:53 +00:00
wosch
3f65ec9421 remove MLINKS tparm.3 due name clash with libtermcap 1996-05-27 22:58:29 +00:00
wosch
d378f22daa remove MLINKS regcomp.3 regexec.3 regerror.3 due name clash with libc 1996-05-27 22:52:24 +00:00
peter
fbe6339187 Add an implementation of the gnu-ish asprintf() and vasprintf(). They are
not based on gpl'ed code, just prototype and usage.  I'm not 100% certain
they behave the same while the system is in trouble (eg: malloc() failing)
but in those circumstances all bets would be off anyway.

These routines work like sprintf() and vsprintf(), except that instead of
using a fixed buffer, they allocate memory and return it to the user
and it's the user's responsibility to free() it.  They have allocate as
much memory as they need (and can get), so the size of strings it can deal
with is limited only by the amount of memory it can malloc() on your
behalf.

There are a few gpl'ed programs starting to use this interface, and it's
becoming more common with the scares about security risks with sprintf().
I dont like the look of the code that the various programs (including
cvs, gdb, libg++, etc) provide if configure can't find it on the system.

It should be possible to modify the stdio core code to provide this
interface more efficiently, I was more worried about having something
that worked and was secure.  :-)  (I noticed that there was once intended
to be a smprintf() routine when our stdio was written for 4.4BSD, but it
looks pretty stillborn, and it's intended interface is not clear).  Since
Linux and gnu libc have this interface, it seemed silly to bring yet
another one onto the scene.
1996-05-27 10:49:43 +00:00
scrappy
c2a4a97427 Removed false copyrights... 1996-05-27 06:54:03 +00:00
scrappy
9ec60f586a Added in appropriate Berkeley copyright and RCS Id: string
Closes PR#doc/536
1996-05-27 04:10:28 +00:00
peter
0f5a7440b6 Document that the superuser cannot override link() and unlink() on
directories, and mention that it was historical practice.
1996-05-24 16:32:11 +00:00
mpp
ba6f97d58c Fixed various problems: typos, grammer, missing include files
wrong function type declarations, and wrong argument type
declarations.
1996-05-23 01:05:25 +00:00
wpaul
e29507eb54 - Fix _listmatch() to close PR #1207.
Fix submitted by: Alan Cox <alc@cs.rice.edu>

- Nuke yet another free(result) that isn't needed. (This one I found
  without phkmalloc's help. :)
1996-05-21 16:11:27 +00:00
wollman
1af3a60b40 Fix for vfsload(3):
- Don't allow non-root users to specify LKMDIR.
- Don't allow any users to specify TMPDIR.
- Call /sbin/modload using execl() rather than execlp().
1996-05-17 15:35:13 +00:00
wpaul
b0005a7f9b - Patch around amd core dump problem: don't allow yp_unbind() or _yp_unbind()
to call clnt_destroy() on a potentially NULL RPC handle. Somebody should
  bang on this a bit to make sure the problem is really gone; I seem to
  have difficulty reproducing it. Patch provided by Peter Wemm and
  slightly tweaked by me.

- Don't call _yp_unbind() in individual ypclnt functions unless we encounter
  an RPC error while making a clnt_call().
1996-05-16 18:01:17 +00:00
jdp
0444ae2f09 Fix a bug caused by the collision of a local assembler label with another
use of the same label in a recently-introduced PIC_PROLOGUE.  This
should solve the recent core dumps from pdksh.
1996-05-11 13:28:11 +00:00
peter
02fead7e05 Fix a bogon in the pic + threadsafe version of cerror, it was missing
a PIC_EPILOGUE (leaving an extra long on the stack).

Submitted by: John Polstra <jdp@polstra.com>
1996-05-10 16:43:47 +00:00
jdp
a6bf8584a0 Clarify the description of the FNM_PERIOD flag. 1996-05-10 00:28:34 +00:00
phk
229b3aa014 Make rules reentrant. 1996-05-09 11:30:51 +00:00
wosch
9f795376b3 `mv'' -> `mv -f''
``rm'' -> ``rm -f''
so mv/rm may not ask for confirmation if you are not root
1996-05-07 23:19:49 +00:00
wpaul
c7584211d5 Grrrr... yet another variation on Murphy's Law: the best way to find
bugs in your code is to put it in the -stable branch. (Corollary: the
day you discover the bug is the day the Internet decides to route your
telnet session to the repository box via Zimbabwe.)

Remove one bogus free(result) (from _havemaster()) that slipped by me.

Flagged by: phkmalloc
Pointed out to me by: Stefan Esser
1996-05-07 20:51:52 +00:00
peter
63279fb570 Sync libc_r with libc changes.. 1996-05-05 08:22:20 +00:00
peter
4b7195c991 Add support to enable libc to be compiled in ELF format. (#ifdef __ELF__)
In a nutshell, this macroizes the local/global symbol scoping rules
that are different in a.out and ELF.  It also makes the i386 assembler
stubs conform to i386 PIC calling conventions - the a.out ld.so didn't
object, but the ELF one needs it as it implements PIC jumps via PLT's as
well as calls.  The a.out rtld only worked because it was accidently
snooping the grandparent calling function's return address off the stack..

This also affects the libc_r code a little, because of cpp macro nesting.
1996-05-05 07:56:21 +00:00
wpaul
4df2d36a62 NIS client-side performance tweak:
Each of the ypclnt functions does a _yp_dobind() when it starts and then
a _yp_unbind() when it finishes. This is not strictly necessary and it
wastes cycles: it means we do a new clnt_create() and clnt_destroy()
for each yp_whatever() call. In fact, you can do multiple clnt_call()s
using a single RPC client handle returned by clnt_create(). Ideally we only
have to create a handle to ypserv once (the first time we call a ypclnt
function) and then destroy it and rebind only if a call to ypserv fails.

- Modify _yp_dobind() so that it only creates a new RPC client handle
  when establishing a new binding or when one of the ypclnt calls
  invalidates an existing binding and calls _yp_dobind() to establish
  a new one.

- Modify the various ypclnt functions to only call _yp_unbind() if a
  call to ypserv fails.
1996-05-02 15:44:53 +00:00
phk
e4ee69bc24 NBPG -> PAGE_SIZE 1996-05-02 09:23:36 +00:00
phk
640ce8297e Use PAGE_SIZE instead of NBPG 1996-05-02 08:43:37 +00:00
phk
37811d9fc0 Cache the result of getpagesize() so we only make one syscall.
Use getpagesize instead of CLBYTES.
1996-05-02 08:43:05 +00:00
mpp
94cc53e73d Convert the time2posix man page to mdoc format. This still
needs some other cleanup, but it is good enough for now.
1996-05-01 23:17:27 +00:00
mpp
e7fdb04c6f Fix a typo. 1996-05-01 22:49:36 +00:00
mpp
9c1ce5a32e Remove a redundant description of the EMFILE error, and fix a typo.
Submitted by:	James Raynard <jraynard@dial.pipex.com>
1996-05-01 22:20:40 +00:00
bde
0a13cbc5da Fixed incomplete or wrong lists of prerequisite #includes related to
<sys/types.h>.
1996-05-01 01:45:23 +00:00
bde
8bc7ed820f Fixed incomplete or wrong lists of prerequisite #includes related to
<sys/types.h>.
1996-05-01 01:40:04 +00:00
bde
62b0977186 Fixed a wrong prerequisite #include and a missing function-arg type. 1996-05-01 01:18:43 +00:00
bde
f1cd83342e Fixed misformatted #include (.Ft -> .Fd). 1996-05-01 01:04:44 +00:00
bde
7dbb860b71 Fixed longstanding namespace convolution involving rune_t vs wchar_t.
If _ANSI_SOURCE or _POSIX_SOURCE is defined, then <ctype.h> had to
be included before <stddef.h> or <stdlib.h> to get rune_t declared.
Now rune_t is declared perfectly bogusly in all cases when <ctype.h>
is included.

This change breaks similar (but more convoluted) convolutions in the
stddef.h in gcc distributions.  Ports of gcc should avoid using the
gcc headers.
1996-05-01 00:40:10 +00:00
jkh
6347c207dc hash_search() has changed its calling semantics somewhat - bring
libforms back into sync.
1996-04-30 00:17:56 +00:00
wpaul
eb2fc8df69 Very minor tweak:
In __initdb(), a failure to open the local password database is supposed
to result in a warning message being syslog()ed. This warning is only
supposed to be generated as long as the 'warned' flag hasn't been yet;
once the warning is generated, the flag should be set so that the message
is only syslog()ed once. However, while the state of the flag is checked
properly, the flag's state is never changed, so you always get multiple
warnings instead of just one.

Pointed out by: Peter Wemm
1996-04-29 14:48:47 +00:00
jkh
ac4be47489 Fix mis-declared static arrays that made sysinstall SEGV in
Set_Boot_Blocks().  Boy, this one had me tearing my hair out!
I hate how the loader distinguishes between `extern char *foo' and
`extern char foo[]' sometimes! :-)
1996-04-29 06:45:33 +00:00
jkh
b431239bb3 Move some warn()'s into DEBUG space since I don't need them coming
out in my curses interfaces and spamming my screen.
1996-04-29 05:03:02 +00:00
joerg
2d430f5746 /etc/skeykeys was basically suffering from the same vulnerability
as any non-shadowed /etc/passwd.  Ironically, all programs using S/Key
have already been setuid root except keyinfo(1).

This modification creates /etc/skeykeys with mode 0600 to prevent it
from being examined by ordinary users.
1996-04-26 21:33:18 +00:00
jkh
e2d6b10783 The traceon and traceoff directives aren't in this version ncurses.
Guess nobody's built these tests for quite awhile!
1996-04-25 01:18:30 +00:00