Commit Graph

24 Commits

Author SHA1 Message Date
imp
691010efad compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.
1997-03-31 05:11:47 +00:00
peter
b782f4df30 Revert $FreeBSD$ to $Id$ 1997-02-22 16:15:28 +00:00
wosch
3c5e4a3bbe Sort cross references. 1997-01-20 00:03:00 +00:00
jkh
808a36ef65 Make the long-awaited change from $Id$ to $FreeBSD$
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.
1997-01-14 07:20:47 +00:00
peter
f30080a608 oops, forgot to commit this. the sockaddr_un init code was missing
initialisers for sun_len and not accounting for it in the sizeof
calculation.  Ie: it was potentially sending an unterminated string into
the kernel.
1996-11-15 15:56:45 +00:00
peter
6926a0a5d1 Fix harmless bugs found while hunting for chpass nis failure 1996-11-15 14:13:51 +00:00
peter
f4d89c626a Uninitialised length variable passed to accept(), causing random accept()
failures due to EFAULT.

This is screaming out to go into 2.2
1996-11-15 14:12:21 +00:00
wosch
224bcd3062 add PATH variable, use it 1996-11-04 23:54:01 +00:00
wpaul
c2980df722 Add extra sanity checking to the in-place update routine. Sometimes you
find two users with the same UID (i.e. root and toor), but yp_mkdb(8)
forbits duplicate keys, so only one of them will end up in the *.byuid
maps (probably toor, since it comes after root in the template file).
If I asked rpc.yppasswdd(8) to change toor's password, it would update
the *.byname maps correctly, but incorrectly modify root's entry in
the *.byuid maps since the only matching record with UID=0 in those
maps belongs to root.

To fix this, we check that both the name and UID are correct before trying
to write new entries to the maps.
1996-10-23 21:46:17 +00:00
wpaul
f8eb2a9fb7 Make error messages more informative. 1996-10-23 15:42:37 +00:00
wpaul
37e1a46671 Two small changes that were in my development sources at home
but never made it here for some reason:

- 'u' option was missing from getopt string
- Use daemon() to become daemonic.
1996-10-22 14:58:10 +00:00
wpaul
66f320435d Since rpc.yppasswdd(8) also supports adding entries to the
/var/yp/master.passwd template file and it uses the same kind of code
as chpass(1), it may also be vulnerable to the bug from PR #1519.
May as well deal with it since I'm in the area. (yppasswdd in -stable
doesn't do additions, therefore it shouldn't be have this problem.)
1996-10-22 03:53:06 +00:00
bde
11546f4616 Fixed DPADD. 1996-09-05 17:16:10 +00:00
wpaul
3383de51c2 When updating a password via the standard RPC handler, reset the password
change time (pw_change) to zero.
1996-09-05 15:53:42 +00:00
wpaul
d200f0db63 Fix a couple of bogons. The first two were brought to my attention
by Peter Wemm:

- In yppasswdproc_update_1_svc(), I wasn't paying attention and put
  a couple of lines of code _after_ a return() instead of before.
  (*blush*)

- The removal of certain temp files didn't always work (this showed
  up mostly if you were using /etc/master.passwd as your NIS passwd
  template instead of /var/yp/master.passwd). This is because the
  whole temp file creation mechanism I was using was tragically
  broken (you can't rename across filesystems).

This problem I found myself:

- If you have a very large password database (30,000 or more entries),
  there can be a delay of several seconds while pw_copy() copies the
  ASCII template file and subsitutes in the modified/new entry. During
  this time, the clnt_udp() code in the RPC library may get impatient
  and retry its request. This will get queued at the server and be
  treated as a second request. By then the password change will have
  been completed and the second request will fail (the old password is
  no longer valid). To attempt to fix this, we save the IP address and
  port of each request and ignore any subsequent requests from the
  same IP and same port that arrive within five minutes of each other.
1996-08-04 22:13:05 +00:00
guido
70bae2bee1 Implement incremental passwd database updates. This is done by ading a '-u'
option to pwd_mkdb and adding this option to utilities invoking it.
Further, the filling of both the secure and insecure databases has been
merged into one loop giving also a performance improvemnet.
Note that I did *not* change the adduser command. I don't read perl
(it is a write only language anyway).
The change will drastically improve performance for passwd and
friends with large passwd files. Vipw's performance won't change.
In order to do that some kind of diff should be made between the
old and new master.passwd and depending the amount of changes, an
incremental or complete update of the databases should be agreed
upon.
1996-07-01 19:38:50 +00:00
wpaul
46fc34c49c Whoops: had a couple of hardcoded instances of '/var/yp/' that shouldn't
have been there. Fixed to use yp_dir, which can be set on the command line.
1996-06-23 22:44:06 +00:00
wpaul
0aa6551c71 Somehow, I truncated yp_dbwrite.c in the SRCS line to yp_dbwrite. Curiously,
this did not stop 'make' from working, but it did break 'make depend.'
1996-06-06 20:47:53 +00:00
wpaul
7afc912575 Added support for in-place updates:
If rpc.yppasswdd is invoked with the -i flag, password changes will
be made to the master.passwd template file and the hash map files
in-place, which means it won't have to run a complete map update.
Instead, it calls /var/yp/Makefile with the 'pushpw' target, which
just pushes the maps to the slaves and runs yp_mkdb -c to tell the
local ypserv to flush its database cache.

The server will check the passwd.byname and passwd.byuid maps to see
if they were built in 'insecure' or 'secure' mode (i.e. with real
encrypted passwords in them or without) and update them accordingly.

This combined with rpc.ypxfrd greatly reduces the amount of time it
takes to complete an NIS password change, especially with very large
passwd databases.
1996-06-05 06:13:09 +00:00
wpaul
5d89e95ce0 Fix 'multidomain' code. It returns a pointer to memory that it doesn't
really own (and which can end up being mangled later). The manifestation
of this bug is that the first attempt by a user to change their NIS password
succeeds, but all subsequent attempts fail. rpc.yppasswdd also logs
a message about not being able to find a file called
'/var/yp/<some garbage string>/master.passwd.' (Note that for some
bizarre reason, this doesn't happen with the malloc() from FreeBSD 2.1.0.
I suppose this means we can chalk up another victory for phkmalloc. :)

This bug only occurs if you use the -m flag with rpc.yppasswdd.

Fix this by copying the domain name to a static buffer and returning
a pointer to that instead.

Reported by: Jian-Da Li (jdli@csie.nctu.edu.tw)
1996-05-08 15:57:11 +00:00
mpp
3c57dc7753 Correct some man page xrefs, and some other minor changes to bring some
man pages up to mdoc guidelines and fix some minor formatting glitches.
Also fixed a number of man pages to not abuse the .Xr macro to
display functions and path names and a lot of other junk.
1996-04-08 04:18:31 +00:00
wpaul
46c17f869c Make yppwupdate script redirect stderr to stdout; if we don't do this,
the error messages (if any) from yppush will end up on the system console
instead of the /var/yp/ypupdate.log file.
1996-03-05 15:41:02 +00:00
wpaul
abd2ed647c Add securenets support (uses same access control mechanism as ypserv,
also controlled by /var/yp/securenets).

Add -u flag to turn off the privileged port check done by yp_access();
some commercial systems (IRIX, Solaris 2.x, HP-UX, and probably others)
don't use a reserved port for submitting yppasswd updates. If we always
enforce the check, these client systems will be unable to submit updates
to us.

Document securenets support and -u flag in man page.

Like ypserv, you can compile rpc.yppasswdd to use the tcpwrapper package
instead of securenets if you want to.
1996-02-24 22:10:42 +00:00
wpaul
cddbdd03ca This commit was generated by cvs2svn to compensate for changes in r14062,
which included commits to RCS files with non-trunk default branches.
1996-02-12 15:09:01 +00:00