Commit Graph

203 Commits

Author SHA1 Message Date
jdp
b74213a26d This release is a moderate restructuring of the dynamic linker.
It addresses a number of problems that were present in earlier
versions.

The calls to the "init" and "fini" functions of shared libraries
have been reordered, so that they are called in a strictly nested
fashion, as is required for C++ constructors and destructors.  In
addition, the "init" functions are called in better order relative
to each other.  That makes the system more tolerant of C++ programs
which depend on a library's being initialized before its clients.

The dynamic linker is now more tolerant of shared libraries in
which dependencies on other shared libraries are incompletely
recorded.

Cleanup in the event of errors has been improved throughout the
dynamic linker.  A number of memory leaks were eliminated.

The warning message for a shared library whose minor version number
is too old has been clarified.

The code dealing with the "ld.so.hints" file has been cleaned up.
A bug that caused the hints file to be unmapped incompletely has
been fixed.  A different bug that could potentially cause the hints
file to be mapped on top of a loaded object has been fixed.

The code that searches for shared libraries has been cleaned up.
The searching is now more compatible with that done by SunOS and
SVR4.  Also, some unnecessary and useless searches of both the
hints file and library directories have been eliminated.

Reviewed by:	nate@freebsd.org
1996-01-13 00:15:25 +00:00
jdp
41258e1843 Split up the code so that a single directory can be searched, to
support some changes in the dynamic linker.  (This code is shared
by the dynamic linker.)

Reviewed by:	nate@freebsd.org
1996-01-13 00:14:53 +00:00
phk
cb187fb50a Another '-' needed for make release. 1996-01-11 17:49:55 +00:00
phk
7bf532e1cd Make the new realinstall target a little less draconian so that make release
doesn't fall over.
1996-01-11 17:27:16 +00:00
jdp
d1b95a21ba Install ld.so in a way that is safe even on a running system. 1996-01-11 03:45:55 +00:00
wpaul
f4d93dcaff - Fix error reporting when checking order number via NIS: we return zero
on a failure, but if we're checking a corrupt map we could also get back
  a zero from ypserv without really encountering any actual error. Flag this
  condition and generate an meaningful error message.

- Fix transmission of ypxfr_clear to ypserv: error checking was wrong
  and we sending YPXFR_YPERR as an error status instead of YPXFR_CLEAR.

- To help avoid a race condition (or at least reduce the likelyhood of
  it occuring), use rename() to move a newly transfered map into place
  instead of unlink()ing the old one first and then renaming. Da man page
  sez that rename should do the unlink() for us. This prevents ypserv
  from returning 'no such map in domain' when asked to query a map which
  ypxfr has just unlink()ed but not yet replaced.
1996-01-10 17:44:10 +00:00
wpaul
444412a7f1 Sync with my sources at home (these are really tiny changes):
- Fix a SEGV condition in ypxfr_main.c that reared its ugly head while I
  was working on the 'parallel jobs' feature of the new yppush. After we've
  completed the map transfer and created a local temporary copy, we check
  the order number of the map on ypserv again to make sure it didn't change
  while the transfer was in progress (map skew). If for some reason we flat
  out fail to get the order number from the server, we flag this as an
  error and bail, telling ypxfr_exit() to clean up our temporary files
  for us. However, ypxfr_exit() tries to close the database before unkining
  it, not realizing that it has already been closed prior to the skew check.
  The second attempt to close the database causes a SEGV somewhere inside
  the DB code.

  (Well, it does on my 2.0.5 machine anyway. I haven't seen anyone modify
  the DB library code in ages, so the condition is probably still there.)

  To work around this, we deliberately set dbp to NULL after closing the
  database and check for the condition in ypxfr_exit(), being careful to
  avoid the second close if we see the NULL.

- In yp_dbwrite.c, make yp_open_db_rw() open the database with O_EXLOCK
  flag set. This probably won't affect much of anything, but I feel better
  having it there.
1996-01-06 20:28:06 +00:00
graichen
f5c12107de added rpc.rquotad and rpc.sprayd 1996-01-05 09:44:31 +00:00
graichen
8cc6a099e6 This commit was generated by cvs2svn to compensate for changes in r13240,
which included commits to RCS files with non-trunk default branches.
1996-01-05 08:53:39 +00:00
graichen
9a69151807 Obtained from: NetBSD
imported the rpc.sprayd from NetBSD - it is used by the new spray
command for network analysis
1996-01-05 08:53:39 +00:00
graichen
4f5719b08f Obtained from: NetBSD
Imported rpc.rquotad from NetBSD - currently only used by the
quota-command to display quota's over nfs
1996-01-05 08:47:12 +00:00
graichen
b8e0017fe6 This commit was generated by cvs2svn to compensate for changes in r13237,
which included commits to RCS files with non-trunk default branches.
1996-01-05 08:47:12 +00:00
peter
eee47fe281 Make ftpd use setproctitle() from libutil
I've left the old code in there under #ifdef OLD_SETPROCTITLE in case
somebody wants to try to compile out ftpd on some other machine.
1996-01-01 08:35:11 +00:00
peter
2e79ca4db7 recording cvs-1.6 file death 1995-12-30 19:02:48 +00:00
peter
c3f352d4ad This commit was generated by cvs2svn to compensate for changes in r13122,
which included commits to RCS files with non-trunk default branches.
1995-12-30 19:02:48 +00:00
peter
ab124e78b0 recording cvs-1.6 file death 1995-12-30 19:02:48 +00:00
wpaul
cd0154908c This commit was generated by cvs2svn to compensate for changes in r13007,
which included commits to RCS files with non-trunk default branches.
1995-12-25 03:07:13 +00:00
wollman
20aa19ef2f Implement server-side transaction TCP. (Has no effect on non-TTCP clients.) 1995-12-17 20:25:28 +00:00
peter
d8249966c8 Fix the bug which allowed people to avoid the "-s" (secure) bug.
Now, "finger" is invoked with "--" before the first network supplied
argument, so the "--" and "-l" hacks will be stopped.
1995-12-10 15:07:12 +00:00
nate
5e48a8dc66 Fix typo. 1995-12-02 18:23:00 +00:00
guido
fa388c85dc It is not necessary to check if a '-' is in lusername., Checking if
lusername starts with a '-' is enough. Otherwise, no users with a '-'
in there name can use rlogin.
1995-12-01 20:38:40 +00:00
guido
8476f980ec Timeout when an expected accept does not happen after all.
This gets rids of dozens of hanging ftpd's because some broken
pc implementation `forgets' to open a passive connection.
Obtained from: Wietse Venema
1995-11-29 19:52:30 +00:00
peter
2827d00525 Stop rlogind from bogusly ignoring an explicit .rhosts file for root.
It still correctly ignores hosts.equiv.  This is now consistant with rshd.
1995-11-20 23:25:35 +00:00
ache
44c4f6823f Add missing & in des_set_key argument 1995-11-19 15:20:48 +00:00
peter
f27a7effac Move the setlogin() call a little earlier.. It was being done in the child
process - which would be no longer allowed if the setlogin() changes go
through.  Now the parent (the session leader, when started by inetd) does it.
1995-11-12 18:31:23 +00:00
nate
ed6a6a6567 Changed the terminology for what used to be called the "memorizing"
vector.  Now it is called the "symbol caching" vector.  This was made
possible and unconfusing by other changes that allowed me to localize
everything having to do with the caching vector in the function
reloc_map().

Switched to alloca() for allocating the caching vector, and eliminated
the special mmap-based allocation routines.  Although this was motivated
by performance reasons, it led to significant simplification of the
code, and made it possible to confine the symbol caching code to the
single function reloc_map().

Got rid of the unnecessary and inefficient division loop at the
beginning of rtld().

Reduced the number of calls to getenv("LD_LIBRARY_PATH") to just 1, on
suggestion from <davidg@root.com>.

Added breaks out of the relocation loops when the relocation address is
found to be 0.  A relocation address of 0 is caused by an unused
relocation entry.  Unused relocation entries are caused by linking a
shared object with the "-Bsymbolic" switch.  The runtime linker itself
is linked that way, and the last 40% of its relocation entries are
unused.  Thus, breaking out of the loop on the first such entry is a
performance win when ld.so relocates itself.  As a side benefit, it
permits removing a test from md_relocate_simple() in
../i386/md-static-funcs.c.

Unused relocation entries in other shared objects (linked with
"-Bsymbolic") caused even bigger problems in previous versions of the
runtime linker. The runtime linker interpreted the unused entries as if
they were valid. That caused it to perform repeated relocations of the
first byte of the shared object.  In order to do that, it had to remap
the text segment writable.  Breaking out of the loop on the first unused
relocation entry solves that.

Submitted by:	John Polstra <jdp@polstra.com>
1995-11-02 18:48:15 +00:00
ache
eb02905cc1 Revert fsync ifdef behaviour and name, now default variant acts like
original one.
Suggested by: peter
1995-10-31 09:16:46 +00:00
ache
f84f405c03 Put fsync under #ifdef EXTRA_SANITY and turn it off by default.
fsync here cause real disk trashing when large UUCP mail chanks
parsed.
1995-10-31 08:22:13 +00:00
wpaul
ae139d16d7 Add revnetgroup. 1995-10-26 16:28:33 +00:00
wpaul
5df4b93dd6 This commit was generated by cvs2svn to compensate for changes in r11814,
which included commits to RCS files with non-trunk default branches.
1995-10-26 16:25:29 +00:00
nate
771663de9b Run-time linker speedups - Round One
Implemented symbol memorizing to reduce the number of calls to lookup(),
making relocation go faster.  While relocating a given shared object,
the dynamic linker maintains a memorizing vector that is directly
indexed by the symbol number in the relocation entry.  The first time a
given symbol is looked up, the memorizing vector is filled in with a
pointer to the symbol table entry, and a pointer to the so_map of the
shared object in which the symbol was defined.  On subsequent uses of
the same symbol, that information is retrieved directly from the
memorizing vector, without calling lookup() again.

A symbol that is referenced in a relocation entry is typically
referenced in many relocation entries, so this memorizing reduces the
number of calls to lookup() dramatically.  The overall improvement in
the speed of dynamic linking is also dramatic -- as much as a factor of
three for programs that use many shared libaries.

Submitted by:	jdp@polstra.com "John Polstra"
1995-10-25 16:16:35 +00:00
ache
5741c80058 Remove LD_NOSTD_PATH unsetenv, isn't exist anymore 1995-10-24 06:50:45 +00:00
ache
8c0bb648fb Remove LD_NOSTD_PATH implementation, it isn't works and
can cause some problems.
Suggested-by: davidg
1995-10-24 06:48:16 +00:00
ache
feda6011c3 if uid != euid or gid != egid unsetenv("LD_NOSTD_PATH") too 1995-10-21 14:52:48 +00:00
ache
ad266c215d Fix original patch error with ! before strncmp
Zap only needed LD_* variables
1995-10-20 22:17:35 +00:00
ache
3972a13475 Don't allow LD_* env. variables to be tricked
Submitted by: Sam Hartman <hartmans@mit.edu>
1995-10-20 17:26:40 +00:00
dg
533954be63 Added a -D option to set the TCP_NODELAY socket option. This improves
responsiveness at the expense of some additional network traffic.
1995-10-15 03:40:57 +00:00
gibbs
2734551417 Kerberos can now deal with multi-homed clients.
Kerberos obtains a network address for the local host from the routing
tables and uses it consistently for all Kerberos transactions.  This ensures
that packets only leave the *authenticated* interface.  Clients who open
and use their own sockets for encrypted or authenticated correspondance
to kerberos services should bind their sockets to the same address as that
used by kerberos.  krb_get_local_addr() and krb_bind_local_addr() allow
clients to obtain the local address or bind a socket to the local address
used by Kerberos respectively.

Reviewed by: Mark Murray <markm>, Garrett Wollman <wollman>
Obtained from: concept by Dieter Dworkin Muller <dworkin@village.org>
1995-10-05 21:30:21 +00:00
nate
f30d5c5b04 This is a FreeBSD manpage, not a NetBSD manpage. :) 1995-10-05 05:16:52 +00:00
ache
3f114f05de Build secure telnetd if available and allowed 1995-09-29 19:47:51 +00:00
bde
f0f0f425be Fix SRCS (.c's were .o's) so that `make depend' works. 1995-09-28 17:33:16 +00:00
nate
978778a652 Make the error message more readable when 'ld.so' cannot locate a needed
shared library.  Formerly, the message looked like this:

    ld.so: run: libjdp1.so.1.0: Undefined error: 0

The new message looks like this:

    ld.so: run: Can't find shared library "libjdp1.so.1.0"

(Where "run" is the name of the program being executed.)

Submitted by:	jdp@polstra.com (John Polstra)
1995-09-27 23:17:33 +00:00
nate
b2eb280985 Fixup the "ld.so failed" message for the case when ld.so finds undefined
symbols.

An easy example to see this is to develop an X program which links
against Xt, but doesn't add -lX11 to the link line.  It will link fine,
but cause run-time errors by ld.so because of missing symbols used by Xt
defined in X11.  This patch makes the errors more readable.

Submitted by:   jdp@polstra.com (John Polstra)
1995-09-27 23:14:08 +00:00
dg
f87bf7f81c Fixed bug introduced with the change of startslave()...two arguments
were chopped off of the function call and garbage was passed instead.
The solution involves making some variable globals as well as fixing the
call to have all the arguments.
1995-09-11 20:54:49 +00:00
pst
14ad5aa657 Move erase cleanup outside linemode conditional 1995-09-06 02:03:36 +00:00
pst
3398cc6d11 Properly set the erase character for the login prompt.
Submitted by:	John Capo <jc@irbs.com> & Peter Wemm
1995-09-05 17:38:31 +00:00
pst
e7519fbb2b Delay starting login process until option negotiation is complete to
avoid race condition on connections with larger round-trip-times.

Submitted by:	John Capo & Peter Wemm
1995-09-05 17:34:29 +00:00
ache
f701868b35 Fix ${.CURDIR} misspelling 1995-08-29 13:42:52 +00:00
mpp
684146e8ce Check for expired passwords before allowing access to the system. 1995-08-28 21:30:59 +00:00
joerg
b6d8c98f61 Import Paul Kranenburg's man page for ld.so (aka. rtld).
Obtained from:	NetBSD
1995-08-26 13:17:39 +00:00