Commit Graph

710 Commits

Author SHA1 Message Date
dg
ab5358efa7 Fixed typo. 1995-05-15 12:23:03 +00:00
phk
ad0a2407f5 Create_Chunk_DWIM will not allocate anything in the last cylinder of a
CHUNK_BAD144 slice.
Also mknod the 'c' partition for freebsd slices, so bad144(8) will have
something to work on.
1995-05-15 00:58:25 +00:00
ache
d015557a82 Parse ^? correctly now 1995-05-14 22:33:52 +00:00
ache
471b2e6d7b Parse ^? now, our termcap use it and some termcaps from other
systems use it too
1995-05-14 22:29:13 +00:00
ache
4730235f67 Fix error returning address of local array 1995-05-14 19:14:53 +00:00
ache
cf6b207e9d Fix FtpPasv to not return address of local variable, close PR 399
Submitted by: John Capo <jc@irbs.com>
1995-05-13 22:09:52 +00:00
phk
c9a80054da Added MakeDevDisk(struct disk*, char *path);
fixed bug in extended slice naming.
1995-05-12 18:50:00 +00:00
paul
8e1c58addb Forgot to add these. 1995-05-12 17:31:45 +00:00
paul
65e32573aa New libforms.
Bumped major number.

Ncurses backend still needs improving.
Other back-ends need to be written.
1995-05-12 17:20:06 +00:00
phk
2e780cd86f Get the CHUNK_COMPAT_BSD flag right. 1995-05-11 05:22:54 +00:00
phk
b06a2da118 Create_Chunk_DWIM() is here, though it doesn't quite do what the name implies. 1995-05-10 05:57:04 +00:00
ache
aef44373fe Bump major number instead of minor 1995-05-08 16:08:49 +00:00
phk
021b1e61da Recognize slice type #6 as dos
handle OnTrack Disk manager correctly.
1995-05-08 02:08:33 +00:00
phk
6228dff953 Add check for rootfs > cyl 1024. 1995-05-08 01:34:31 +00:00
phk
dd5b13ab4b I bet Jordan is tearing his hair out, trying to figure the previous patch
out... here is the real thing.
1995-05-08 01:26:47 +00:00
phk
7633746449 Fix bug. 1995-05-08 00:44:46 +00:00
jkh
044b192e69 Whoops! An extra paren somehow got in there. Fixed. 1995-05-07 01:28:16 +00:00
jkh
97b64700b1 Always zero new chunks - keeps things like the private structures from having
bogus data in them.
1995-05-07 01:25:22 +00:00
phk
3f92c42b37 General sanitation and cleanup. Killed the "reserved" type, it wasn't. 1995-05-06 03:28:32 +00:00
dufault
e667a82b93 Make it so that the command formats are the same for both -i and -o.
This means "t" has to stand for bit fields, since b is a valid hex number.
1995-05-05 20:40:03 +00:00
phk
2ef08387ec If in Create_Chunk we (type==freebsd && (flags&CHUNK_ALIGN)), then we will
align this chunk properly.  Have at it Jordan...
1995-05-05 07:07:45 +00:00
phk
a0086bd087 Make the partitions names even more sensible
CheckRules sets the CHUNK_ALIGN & CHUNK_PAST_1024 flags.
1995-05-04 07:00:57 +00:00
phk
3a333cad85 Add the private void *pointer to the chunks, and the functions to manage it.
Make the reassignment of partition names less bogus.
1995-05-03 22:36:52 +00:00
ache
455d2a327b Bump minor number 1995-05-03 22:14:01 +00:00
ache
e945945e13 Bump minor number 1995-05-03 18:54:09 +00:00
wpaul
595e0167eb Cosmetic changes and paranoia checks:
ypbind.c:
Make fewer assumtions about the state of the dom_alive and dom_broadcasting
flags in roc_received().

If select() fails, use syslog() to report the error rather than perror().

Check that all our malloc()s succeed. Report malloc() failure in
ypbindproc_setdom_2() to callers.

yplib.c:

Use #defined constants in ypbinderr_string() rather than hard-coded values.
1995-05-03 18:33:10 +00:00
jkh
3864ecd382 Export the chunk names properly. 1995-05-03 17:38:00 +00:00
phk
af83fa703c Make the target for tst01 more sensible.
Remove bogus targets.
Allocate partition letters as follows:
	lowest offset "flags & CHUNK_IS_ROOT" gets 'a',
	lowest offset "subtype==FS_SWAP" gets 'b'
	the rest is allocated in offset order from this sequence "defghab".
This will generally make sense.
Added rules to complain if more than one CHUNK_IS_ROOT or more than one
FS_SWAP per FreeBSD chunk.
Set CHUNK_IS_ROOT on the 'a' partition in Open_Disk.
Run Fixup_Names in Open_Disk.
1995-05-03 06:30:59 +00:00
jkh
1c18a4d506 foo -> unknown 1995-05-02 20:16:16 +00:00
jkh
41c930394a I need Open_Disk() to not spew on my screen. #ifdef out some diagnostic
printfs.
1995-05-02 19:52:27 +00:00
ache
1f6da08da4 Fix bracket error for LogMask
Submitted by: Ruslan Belkin <rus@home2.UA.net>
1995-05-02 17:46:30 +00:00
jkh
d0d51976ab foo -> unknown.
I have to be able to show this stuff to the user. :-)
1995-05-01 21:30:24 +00:00
joerg
48dd93ce46 Added function and man page for ftok(3), used in conjunction with
the so-called "System V IPC".

Submitted by:	jbeukema@HK.Super.Net (John Beukema)
Obtained from:  Th. Lockert <tholo@sigmasoft.com>, via NetBSD
1995-05-01 08:53:21 +00:00
jkh
d369a779fb Stick a more BSD-like Makefile here so that I can link to the library. 1995-05-01 08:08:02 +00:00
phk
632f39cd53 start CHS is 0xff,0xff,0xff if past 1024.
end CHS is 1023,bios_hd,bios_sect if past 1024.  This way we can find
bios the geometry again.
Added a primitive "scan" to tst01.
1995-05-01 04:05:27 +00:00
phk
0ffc27529d Use the DIOCSYNCSLICE ioctl now. (use only with kernel from this morning).
Get the CHS's right.
Get the disklabels (more) right.
1995-04-30 22:51:05 +00:00
phk
207cc9aa1b get bootblocks right.
Add mbr and bteasy17 to tst01
read partitions from kernel instead of disk.
Still problems with writing labels, discussing with Bruce.
Extended slices doesn't get written yet.
1995-04-30 11:04:16 +00:00
phk
e3530256c9 Use 0xff for CHS when past 1024 cyls.
Fix (hopefully) a bug Gary found.
1995-04-30 07:30:45 +00:00
phk
5b57901e70 Make the default case less scary :-) 1995-04-30 06:19:32 +00:00
phk
b86a741dd0 Now we do writes too. 1995-04-30 06:09:29 +00:00
wpaul
bdad16fdda Small fix for the following problems:
- If you take the wheel entry out of /etc/group and turn on NIS,
the '+:*::' line is incorrectly flagged as the entry for wheel (the
empty gid section is translated to 0), hence getgrgid() returns '+'
as the name of the group instead of 'wheel.'

- Using just '+:' as the 'turn on NIS' switch in /etc/group makes
getgrgid() dump core because of a null pointer dereference. (Last
time I was in here, I foolishly assumed that fixing the core dump
problems with getgrnam() and getgrent() would fix getgrgid() too.
Silly me.)
1995-04-29 17:14:50 +00:00
phk
9684e60aa3 Names are assigned when chunks are created.
Rules for only one fat & one extended in MBR.
1995-04-29 07:21:14 +00:00
phk
2d7a4f8776 Even More stuff. Disk_Names() is here amongst other things. 1995-04-29 04:50:39 +00:00
phk
093fd20263 Next Iteration, getting better.
Made an All_FreeBSD() function.
Added a cmd-line interface (lowest rank) to the tst01 program.
The tst01 program is harmless (worst it can do is coredump), but it
is instructive to run, you can see what the slice-code things of your
disk...
1995-04-29 04:00:57 +00:00
phk
f7bf327ed4 Sanitize and explain a little bit... Implement the first rules... 1995-04-29 01:55:25 +00:00
phk
773ad9f330 This is a revision 0.00 of the backend stuff for the fdisk/disklabel stuff
in the new sysinstall.  If you want to give a helping hand, then send email
to phk@FreeBSD.ORG.  DO NOT COMMIT TO THIS DIRECTORY!
1995-04-28 23:57:04 +00:00
dufault
d1214fe1e8 Fix a few problems with the debugging output. Add a new "visit" function. 1995-04-28 19:23:51 +00:00
wollman
56ee4e4255 No sense in copying the hex[] array in each call to MDXEnd(), it's a
constant.  (There probably ought to be a single libc version of it.)
1995-04-27 16:05:51 +00:00
wpaul
b72b2e3557 ypbind.c: Major overhaul.
- Moved to a more client-driven model. We aggressively attempt to keep
the default domain bound (as before) but we give up on non-default
domains if we lose contact with a server and fail to get a response
after one round of broadcasting. This helps drastically reduce the
amount of network bandwitdh that ypbind consumes: if a client references
the secondary domain at some later point, this will prod ypbind into
establishing a new binding anyway, so continuously broadcasting without
need is pointless.

Note that we still actively seek out a binding for our default domain
even if no client program has queried us yet. I'm not exactly sure if
this matches SunOS's behavior or not, but I decided to do it this way
since we can get into all sorts of trouble if our default domain comes
unbound. Even so, we're still much quieter than we used to be.

- Removed a bunch of no-longer pertinent comments and a couple of
chunks of #ifdef 0'ed code that no longer fit in to the new layout.

- Theo deRaadt must have become frustrated with the callback mechanism
in clnt_broadcast(), because he shamelessly stole the clnt_broadcast()
code right out of the RPC library and hacked it up to suit his needs.
(Comments and all! :)

I can understand why: clnt_broadcast() blocks while awaiting replies.
Changing this behavior requires surgery. However, you can work around
this: fork the broadcast into a child process and relay the results
back to the parent via a pipe. (Careful obervation has shown that the
SunOS ypbind forks children for broadcasting too, though I can only
guess what sort of interprocess communication it uses. pipe() seems to
do the job well enough.)

This may seem like the long way around, but it's not really that
hard to implement, and I'd prefer to use documented RPC library functions
wherever possible. We're careful to limit the number of simultaneous
broadcasters to avoid swamping the system (the current limit is 5).
Each clnt_broadcast() call only sends out a small number of packets
at increasing intervals. We're also careful not to spawn more than one
bradcaster for a given domain.

- Used clntudp_bufcreate() and clnt_call() to implement a ping()
function for directly querying a particular server so that we can
check if it's still alive. This lets me completely remove the old
bradcasting code and use actual RPC library calls instead, at the
cost of more than a few handfulls of torn-out hair. (Make no mistake
folks: I *HATE* RPC.) Currently, the ping interval is one minute.

- Fixed another potential 'nfds too big for select()' bug: use
_rpc_dtablesize() instead of getdtablesize().

- Quieted gcc -Wall a bit.

- Probably a bunch of other stuff that I've forgotten.

ypbind.8:

- Updated man page to reflect modifications.

ypwhich.c:

- Small mind-o fix from last time: decode error results from
ypbind correctly (*groan*)

yplib.c:

- same as above

- Change behavior of _yp_dobind() a little: if we get back a 'Domain
not bound' error for a given domain, retry a few times before giving
up and passing the error back to the caller. We have to sleep for a
few seconds between tries since the 'Domain not bound' error comes
back immediately (by repeatedly looping, we end up pounding on ypbind).
We retry at most 20 times at 5 second intervals. This gives us a full
minute to get a response. This seems to deviate a bit from SunOS
behavior -- it appears to wait forever -- but I don't like the idea
of perpetually hanging inside a library call.

Note that this should fix the problems some people have with bindings
not being established fast enough at boot time; sometimes amd is started
in /etc/rc after ypbind has run but before it gets a binding set up. The
automounter gets annoyed at this and tends to exit. By pausing ther YP
calls until a binding is ready, we avoid this situation.

- Another _yp_dobind() change: if we determine that our binding files
are unlocked or nonexistent, jump directly to code that pokes ypbind
into restablishing the binding. Again, if it fails, we'll time out
eventually and return.
1995-04-26 19:03:16 +00:00
jkh
41bc6e0fbe Fix a number of additional warnings. 1995-04-26 14:04:36 +00:00
jkh
dec02faeac Move <varargs.h> out of FtpLibrary.h and into the .c files that actually
need them.  Fix a number of additional warnings.
1995-04-26 14:04:23 +00:00
jkh
857fa9c3d0 Add libftp to list of targets. 1995-04-25 15:08:52 +00:00
jkh
fee9159363 Now check all the warning purges and general clean-up in on the second
pass.
1995-04-25 15:08:02 +00:00
jkh
e20597c1ef This commit was generated by cvs2svn to compensate for changes in r8064,
which included commits to RCS files with non-trunk default branches.
1995-04-25 15:05:11 +00:00
jkh
02ace70617 A programmatic interface to ftp. I need this for several other
components of the system.

The license is poorly worded, though I have an (email only) release
from the author for unlimited FreeBSD use.  I will try to get something
more concrete, though the author's remote location makes this difficult.
Submitted by:	Oleg Orel <orel@oea.ihep.su>
1995-04-25 15:05:11 +00:00
bde
ff316d0a9c Remove setre*id*. 1995-04-25 10:00:04 +00:00
ache
e332c87682 Add setreuid/setregid to MAN section 1995-04-23 15:06:16 +00:00
ache
14625e5bf4 Add setreuid/setregid 1995-04-23 12:34:48 +00:00
ache
0e058b2a04 Fix history info 1995-04-23 12:31:13 +00:00
wpaul
3d4135682a in _freecaches(): strdup() allocates us memory -- remember to free it. 1995-04-22 17:28:04 +00:00
wpaul
be813a3b68 small NIS binding fixes:
ypbind.c: if a client program asks ypbind for the name of the server
for a particular domain, and there isn't a binding for that domain
available yet, ypbind needs to supply a status value along with its
failure message. Set yprespbody.ypbind_error before returning from
a ypbindproc_domain request.

yplib.c: properly handle the error status messages ypbind now has the
ability to send us. Add a ypbinderr_string() function to decode the
error values.

ypwhich.c: handle ypbind errors correctly: yperr_string() can't handle
ypbind_status messages -- use ypbinderr_string instead.
1995-04-21 18:04:36 +00:00
bde
135036b624 Fix bugs in opendir():
- it succeeded on non-directories (see POSIX 5.1.2.4).
- it hung on (non-open) named pipes.
- it leaked memory if the second malloc() failed.
- it didn't preserve errno across errors in close().
1995-04-21 15:23:27 +00:00
ache
38cb38bdc1 Add a bit more docs 1995-04-20 21:36:15 +00:00
ache
b07c35fa47 If locale not available, fallback to strcasecmp, not to strcmp 1995-04-16 22:43:45 +00:00
ats
160723cf92 Removed the y.tab.h file from the sources. It is automatically generated
from yacc.
Put the lex.c parser.c and y.tab.h into a CLEANFILES target in the
makefile, they are all generated and need to be removed on a clean.
1995-04-15 17:15:11 +00:00
wpaul
faeb716870 Head off potential core dump in _havemaster() (we don't need to free any
memory here: the underlying YP routines handle this one for us).
1995-04-15 03:11:55 +00:00
wpaul
3ce6850856 Better conformance to SunOS behavior: if we can't match a user to one
of the plus or minus lists at all, reject him. This lets you create
a +@netgroup list of users that you want to admit and reject everybody
else. If you end your +@netgroup list with the wildcard line
(+:::::::::) then you'll have a +@netgroup list that remaps the
specified people but leaves people not in any netgroup unaffected.
1995-04-14 14:56:28 +00:00
wollman
ddebc4599e Add err_set_file() and err_set_exit() functions to make it possible for
programs which use err(3) to work nicely in a wider range of environments
(e.g., dialog).
1995-04-13 18:04:11 +00:00
wpaul
a20de0747b Add an ethers(3) man page. 1995-04-12 22:28:49 +00:00
joerg
2d762a44a2 The implementation of rexec() missed the function ruserpass(), so the
link stage fell over for any program that attempted to use rexec().

Ruserpass() remains undocumented; i could not find any documentation
for it on other systems.

Also added a BUGS section to the man page, stating that this function
constitutes a potential security hole (as well as the underlying
"exec" service).

Submitted by:	rgrimes
Originally submitted by: agc@uts.amdahl.com (Alistair G. Crooks)
Obtained from: netbsd-bugs@NetBSD.ORG
1995-04-11 19:52:10 +00:00
joerg
6f7aeef5d2 My libcompat cleanup.
o	add missing man pages

o	make all man pages clearly refer to the libcompat thingie

o	add the information to the vtimes(3) and vlimit(3) man pages
	that nobody has reimplemented the functions by now

o	add the missing getpw.c

o	add code and man pages for cftime(3) and
	ascftime(3) -- i found them somewhere in old
	unfinished work
1995-04-10 18:48:06 +00:00
wpaul
e98b1385b8 More of the same: we also need to handle multiple domains properly
even if /var/yp/binding/DOMAIN.VERS doesn't exist yet.
1995-04-09 21:52:31 +00:00
wpaul
568d625957 Fix behavior of YP library routines in environments with multiple domains,
where one or more of the non-default domains are not yet bound.

If we make a YP request for a domain other than the default domain,
and there is no binding for the new domain yet, _yp_dobind() sees
that the /var/yp/binding/DOMAIN.VERS file for the unbound domain is
not locked (by ypbind) and from this it concludes that the NIS system
is dead, so it gives up.

This behavior has been changed: before giving up in this case, we now
make a second check to see if the binding file for the *default* domain
is also not locked. Only if the default domain binding file is also
unlocked to we now assume that ypbind has bought the farm and bail out.
(Note: this assumes that the user hasn't changed the default domain
while ypbind is running.)

With this change, _do_ypbind() is allowed to proceed into the next
section of code wherein it prods ypbind into establishing a binding
for the new domain. This first call times out after ten seconds,
after which it should retry and succeed. From then on, the binding
for the second domain should be handled normally.
1995-04-09 19:26:23 +00:00
ache
8566f5db7b Add missing header reference 1995-04-09 04:59:40 +00:00
bde
2cc0b4033d Submitted by: J.T. Conklin <jtc@wimsey.com>
Second part of update to fdlibm 5.2: speed up argument reduction for trig
functions in the case pi/4 < |x| < 3pi/4.

Remove unused static constants ("one").
1995-04-07 23:23:27 +00:00
bde
07041fdd38 Submitted by: J.T. Conklin <jtc@wimsey.com>
First part of update to fdlibm 5.2: fix jn(n, x) and jnf(n, x).
jn(-1, x) was too large by a factor of 3.
1995-04-07 23:13:43 +00:00
bde
76e6f5422f Reviewed by: ache and wollman (long ago)
isctype.c:
o The tolower() and toupper() functions duplicated too much code
  and were out of date (surprise).  This didn't matter because
  it was difficult to call them.
o Change formatting to be more like that in <ctype.h> (with
  extra parentheses as in the macros).  Perhaps this file should
  be machine generated or everything should be handled like
  __tolower() so that no code is repeated.

nomacros.c:
o Instead of looking at _USE_CTYPE_INLINE_ to see what <ctype.h>
  has done, set _EXTERNALIZE_CTYPE_INLINES_ to tell <ctype.h>
  what to do, so that we don't have anything left to do.  Note
  that code is now generated even if inlines are used by default.
  This allows users to switch to non-inline versions.
1995-04-07 11:52:17 +00:00
bde
e7d4f4404c Obtained from: 1.1.5 (originally by jtc)
Fix printf("%g", 0.0) - print "0", not "0.".  The previous fixes in this
area had one non-cosmetic (non-)change that caused this bug.

Bruce
1995-04-06 16:28:15 +00:00
joerg
dc1920c854 The man page setmode(3) declares `void setmode' when it should be
declared `void *setmode'.

Submitted by:	kargl@troutmask.apl.washington.edu
1995-04-05 22:56:45 +00:00
ache
7c173188be Add "before inclusion of any header which ... "
Suggested by: bde
1995-04-04 11:29:51 +00:00
wpaul
12dab28cef 'Fix' for esoteric misfeature discovered while searching for another bug:
select() returns EINVAL if you try to feed it a value of FD_SETSIZE greater
that 256. You can apparently adjust this by specifying a larger value of
FD_SETSIZE when configuring your kernel. However, if you set the maximum
number of open file descriptors per process to some value greater than
the FD_SETSIZE value that select() expects, many selects() within the RPC
library code will be botched because _rpc_dtablesize() will return
invalid numbers. This is to say that it will return the upper descriptor
table size limit which can be much higher than 256. Unless select() is
prepared to expect this 'unusually' high value, it will fail. (A good
example of this can be seen with NIS enabled: if you type 'unlimit' at
the shell prompt and then run any command that does NIS calls, you'll
be bombarded with errors from clnttcp_create().)

A temporary fix for this is to clamp the value returned by _rpc_dtablesize()
at FD_SETSIZE (as defined in <sys/types.h> (256)). I suppose the Right
Thing would be to provide some mechanism for select() to dynamically
adjust itself to handle FD_SETSIZE values larger than 256, but it's a
bit late in the game for that. Hopefully 256 file descriptors will be enough
to keep RPC happy for now.
1995-04-04 05:53:22 +00:00
wpaul
fd72f57342 getpwent.c: fix problem with emacs dumping core when NIS is enabled. Also
add #includes for YP headers when compiling with -DYP to avoid some implicit
declarations.

getgrent.c & getnetgrent.c: add some #includes to avoid implicit declarations
of YP functions.
1995-04-04 05:36:16 +00:00
ache
905b232bc7 Properly describe how to expand default limit of handled descriptors 1995-04-04 01:27:54 +00:00
wpaul
9b1ee02f17 Submitted by: Sebastian Strollow
Obtained from: Casper H. Dik (by vay of Usenet)

Small patch to help improve NIS rebinding times (among other things):


>From: casper@fwi.uva.nl (Casper H.S. Dik)
>Newsgroups: comp.sys.sun.misc,comp.sys.sun.admin
>Subject: FIX for slow rebinding of NIS.
>Summary: a small change in libc makes life with NIS a lot easier.
>Message-ID: <1992Jan17.173905.11727@fwi.uva.nl>
>Date: 17 Jan 92 17:39:05 GMT
>Sender: news@fwi.uva.nl
>Organization: FWI, University of Amsterdam
>Lines: 138
>Nntp-Posting-Host: halo.fwi.uva.nl

Have you been plagued by long waits when your NIS server is rebooted?
READ ON!

Sun has a patch, but the README says:

********************* WARNING ******************************

  This is a new version of ypbind that never uses the NIS
  binding file to cache the servers binding. This will have
  the effect of fixing the current symptom. However, it might
  degrade the overall performance of the system when the
  server is available. This is most likely to happen on an
  overloaded server, which will cause the network to produce
  a broadcast storm.

*************************************************************

Therefor, I have produced another fix.

o What goes wrong.

When the NIS server is rebooted, ypserv will obtain different ports
to listen for RPC requests. All clients will continue to use the old
binding they obtained earlier. The NIS server will send ICMP dst unreachable
messages for the RPC requests that arrive at the old port. These ICMPs
are dropped on the floor and the client code will continue sending the
requests until the timer has expired. The small fix at the end of this
message will pick up these ICMP messages and deliver them to the RPC layer.

o Before and after.

I've tested this on some machines and this is the result:

	(kill and restart ypserv on the server)

original% time ypmatch user passwd
user:....
0.040u 0.090s 2:35.64 0.0% 0+126k 0+0io 0pf+0w (155 seconds elapsed time)

fixedhost% time ypmatch user passwd
user:....
0.050u 0.050s 0:10.20 0.9% 0+136k 0+0io 0pf+0w (10 seconds elapsed time)

Rebinding is almost instantaneous.

o Other benefits.
	RPC calls that use UDP as transport will no longer time out but
	will abort much sooner. (E.g., the remote host is unreachable or
	111/udp is filtered by an intermediate router)
1995-04-02 20:05:20 +00:00
wpaul
3c90ffcb6f Fix xdr_ypmap_parms() so that it agrees with xdr_domainname(), xdr_peername()
and friends.
1995-04-02 19:58:29 +00:00
ache
46d6abb62c Fix manpage rule 1995-04-02 19:35:40 +00:00
wpaul
3db0e33b68 Add ether_addr functions to libc. This seems to be the logical place
to put them. A man page is in the works.
1995-04-02 01:31:17 +00:00
wpaul
d1bfae9353 Add some missing xdr functions needed for server-side implementations.
(This is to help me reduce yppush a bit: it has its own copy of yp_xdr.c
right now, but I can get rid of it now that this stuff is here.)
1995-04-02 01:02:17 +00:00
jkh
02ba73f737 Add the nls code for XPG3-style message catalogs to libc.
Obtained from: NetBSD
1995-03-30 12:47:27 +00:00
jkh
44aecda58d Add nls include to Makefile. 1995-03-30 12:46:36 +00:00
phk
3a58344a8b Install the dlopen.3 manpage. 1995-03-30 06:40:31 +00:00
ache
5ca17766a4 Clear IGNPAR in cfmakeraw() instead of set it. 1995-03-29 19:28:35 +00:00
dfr
1b9498b875 Use __tty_fileno instead of STDERR_FILENO when detecting window size
changes
Reviewed by:	Bob Willcox <bob@obiwan.pmr.com>
1995-03-28 22:20:19 +00:00
jkh
837a13ef49 Tweak a few things just to show how form traversal might work fully.
Fix some spelling errors in the example.c file and make error handling
a little more explanatory.
1995-03-28 10:42:09 +00:00
jkh
ce961aa18e Include <strhash.h> instead now. 1995-03-28 10:25:13 +00:00
jkh
afdcd6ad46 Fix a missing _hash() to prevent namespace pollution with the db/hash routines.
Grrr.  If the dbhash routines weren't grossly overengineered I wouldn't
even need to do this! :-(

Also now export the hash_stats routine.  Manpage coming RSN - I promise.
1995-03-28 08:41:02 +00:00
wpaul
0c2bd45e40 Use yp_order() instead of yp_first() in _havemaster() to check for the
presence of the master.passwd.byname map, and remember to free the
returned order value before exiting.
1995-03-27 20:46:40 +00:00
nate
90d65a3dd9 Bump the shared library minor # because of the additions of the
strhash() functions.
1995-03-27 20:23:11 +00:00
ache
f42021043a Remove duplicates: parm rindex & scroll right 1995-03-27 05:13:31 +00:00
ache
feaddc78a4 Fix bug using CSR for partial scrolling 1995-03-27 01:19:14 +00:00
ache
04eca1b0ef Hash 8bit chars without sign extension 1995-03-26 19:32:24 +00:00
ache
0c5ab74dd8 Update info about LC_COLLATE implementation 1995-03-26 18:57:19 +00:00
jkh
ecda10a06f change hash.h to strhash.h to match new convention.
Manpage for strhash functions to follow tomorrow.
1995-03-26 10:25:00 +00:00
jkh
8851a8c5cc Add the strhash family of routines. They provide a number of features
that the db/hash functions don't, and they're much simpler to use for
low-overhead string hashing.
1995-03-26 10:21:55 +00:00
paul
e0abbde8cf Use a hash table to hold all the bindings info rather than a linked list.
Forms now have their own local bindings table so that anything
declared within a form is local to that form. This means you can
have fields of the same name in different forms.

Added inlined attribute setting for strings e.g. "This is \bold bold"

Added entry and exit functions for fields.
1995-03-26 07:44:33 +00:00
ache
2aa7e0b837 Continue of previous fix: eliminate backslashes too. 1995-03-26 00:47:02 +00:00
ache
b3e27092b5 Compact entry returned to user:
1) Eliminate spaces and double ':'.
2) Remove duplicated capabilities from tc= expansion.
It is needed to not overflow historycal 1024 limit.

Add range check and return -1 if entry is too big instead
of corrupting user memory.
1995-03-26 00:35:36 +00:00
dg
6136601fad Updated manual page to indicate flags argument; added return value and
errors section.
1995-03-25 17:24:47 +00:00
phk
37bcaa81f1 scandir(3) didn't transfer d_type, and d_ino is called d_fileno now. 1995-03-25 07:39:02 +00:00
wpaul
d9495709e4 Add calls to endgrent() and endnetgrent() to the end of _createcaches(). 1995-03-25 00:30:35 +00:00
wpaul
406689a5bd Add more sanity checks. *Lots* of sanity checks. Huge tracts of sanity checks.
Make sure all arguments to the yp_*() functions are valid before sending
them off to the server. This is somewhat distressing: once again my
FreeBSD box brought down my entire network because of NIS bogosities.
I *think* the poor argument checking in this module is the cause, but
I still haven't been able to reproduce the exact series of events that
lead to the ypserv crashes. For now I've resorted to sticking my FreeBSD
box in a seprate domain. Hopefully a weekend of heavy testing will
uncover the problem.
1995-03-24 21:21:37 +00:00
wpaul
7331337b36 Make sanity checks saner: don't let setnetgrent() or innetgr() swallow
any bogus arguments.
1995-03-24 20:42:28 +00:00
ache
89bccb0c6f Get rid of strtok(), it is depricated in libs 1995-03-24 17:40:54 +00:00
ache
9524bc7a36 Change strtok() to strsep(), strtok() usage is depricated
in libraries.
1995-03-24 17:27:22 +00:00
ache
1402f0cd95 Change strtok() to strsep(), using strtok() can cause memory corruption
if user program use it too in the same time.
1995-03-24 16:33:44 +00:00
ache
522e5e4d53 Sicnce this code shares the same fragment as gethostnamaddr:
Change strtok() to strsep(), cause memory corruption for all
programs which use strtok() too in the same time.
Fix potential NULL reference, depends of /etc/hosts.conf format
Fix the bug when service name fetched always from beginning of the line,
not from parsed token.
1995-03-24 15:51:30 +00:00
ache
74c984e74d Change strtok() to strsep(), cause memory corruption for all
programs which use strtok() too in the same time.
Fix potential NULL reference, depends of /etc/hosts.conf format
Fix the bug when service name fetched always from beginning of the line,
not from parsed token.
1995-03-24 15:38:54 +00:00
wpaul
5d03aae6f1 Yikes! Fix stupid mistake I made in last commit that made getpwent() ignore
local password entries when YP was enabled. (How the heck did that
get by me!?)
1995-03-24 08:01:01 +00:00
wpaul
946e0fba44 As per Justin T. Gibbs's request, agument the +@netgroup/-@netgroup
remapping mechanism in the following manner: if given an entry +@foo
and there is no netgroup named 'foo,' try searching for a regular
user group called 'foo' and build the cache using the members of
group 'foo' instead. If both a netgroup 'foo' and a user group 'foo'
exist, the 'foo' netgroup takes precedence, since we're primarily
interested in netgroup matching anyway.

This allows access control schemes based on ordinary user groups
(which are also available via NIS) rather than netgroups, since
netgroups on some systems are limited in really brain-damaged ways.
1995-03-24 05:46:47 +00:00
wpaul
7cd88703a8 Don't let yp_match() or yp_next() operate on null or empty keys: asking
ypserv to do a yp_match() with an a null or empty key causes much havok.
(Note that this could be construed as a denial of service attack if used
maliciously.)
1995-03-23 22:23:15 +00:00
wpaul
77a782d587 Don't let setnetgrent() operate on a null or empty group name: it can
tickle a bug in ypserv and make a serious mess of things.
1995-03-23 22:21:16 +00:00
wpaul
ec2490897f Very important sanity checks: today I clobbered all four NIS servers on
my network because setnetgrent() was trying to do a lookup on group "".
It seems that an attempt to do a yp_match() (and possible yp_next())
on a null or empty key causes Sun's ypserv in SunOS 4.1.3 to exit
suddenly (and without warning). Our ypserv behaves badly in this
situation too, thoush it doesn't appear to crash. In any event, getpwent,
getnetgrent and yp_match() and yp_next() are now extra careful not to
accidentally pass on null or empty arguments.

Also made a small change to getpwent.c to allow +::::::::: wildcarding,
which I had disabled previously.
1995-03-23 22:18:00 +00:00
wpaul
0eb3db6023 Lots of fixes/improvements in the +user substitution handling:
- Have the +@netgroup/-@netgroup caches handle the +user/-user cases too.
- Clean up getpwent() to take advantage of the improved +user/-user handling.
1995-03-23 17:33:19 +00:00
wpaul
d76703731d Small cleanups:
- Prepend a '_' to a couple of things
- Make sure YP is enabled in _createcaches()
- Remove a couple of unused/uneeded variables from _createcaches()
1995-03-23 04:04:01 +00:00
wpaul
24d962fe5d Phew! Done at last: getpwent now understands +@netgroup/-@netgroup directives
in addition to the existing NIS substitutions. I may tweak this a bit in
the future, but the important stuff is all here.
1995-03-23 00:59:15 +00:00
wpaul
f414596f26 Use better/stronger/faster NIS lookup code: by using yp_match() instead of
the yp_first()/yp_next() combo, we let the database code in ypserv do some
of the work for us.
1995-03-21 19:47:12 +00:00
phk
58ee097062 msun becomes the default -lm the right way now. 1995-03-21 02:52:05 +00:00
wpaul
576eeae319 Reviewed by: Bill Paul <wpaul@freebsd.org>
Submitted by:	Sebastian Strollo <seb@erix.ericsson.se>

- In /usr/src/lib/libc/yp/yplib.c, function yp_first when clnt_call
fails with (r != RPC_SUCCESS) ysd->dom_vers should be set to 0! This
ensures that /var/yp/bindings/dom.vers will be read again on retry.
What happens now is that when our server is down and someone tries to
use yp they will continue to try until kingdom come. So:
        if(r != RPC_SUCCESS) {
                clnt_perror(ysd->dom_client, "yp_first: clnt_call");
                ysd->dom_vers = -1;
                               ^^^^ change to 0
                goto again;
        }
1995-03-21 00:48:55 +00:00
rgrimes
c32009c986 Comment out declaration of kvm_uread until it can be fixed correctly. 1995-03-20 16:35:11 +00:00
rgrimes
7b174519a7 Change u_long to unsigned long to be consistent. 1995-03-20 16:17:50 +00:00
wpaul
48d35b4b93 At last! Modified __ivaliduser() to do the same kind of user/host validation
that everyone else does: you can now use +host/-host, +user,-user and
+@netgroup/-@netgroup in /etc/hosts.equiv, /.rhosts, /etc/hosts.lpd and
~/.rhosts. Previously, __ivaliduser would only do host/user matches,
which was lame. This affects all the r-commands, lpd, and any other
program/service that uses ruserok().

An example of the usefullness of this feature would be a hosts.equiv
file that looks like this:

+@equiv-hosts

Since the netgroup database can now be accessed via NIS, this lets you
set up client machines once and then never have to worry about them
again: all hosts.equiv changes can now be done through NIS. Once I
finish with getpwent.c, we'll be able to do similar wacky things
with login authentication too. (Our password field substitution
will finally be on par with everyone else's, and I'll finally be
able to fully integrate my FreeBSD machine into my network without
having to worry about the grad students sneaking into it when I'm
not looking. :)

Danger Will Robinson! I tested this thing every which way I could, but
Murphy's Law applies! If anybody spots a potential security problem with
the way my matching algorithm works, tell me immediately! I don't want
crackers snickering and calling me names behind my back. :)
1995-03-20 07:29:55 +00:00
wpaul
cb596fe111 Whoops: expanding netgroups that reference multiple netgroups doesn't
work because parse_netgrp() doesn't recurse properly. Fixed by
changing

if (parse_netgrp(spos))
	return(1);
to

if (parse_netgrp(spos))
	continue;

inside parse_netgrp(). (Lucky for me I happen to have a fairly complex
'live' netgroup database to test this stuff with.)
1995-03-19 22:19:52 +00:00
nate
a57e4a521e Separated out the _putchar & __cputchar() routines so that programs such
as tn3270 can replace _putchar(0 with their own routine and still keep
using the __cputchar() routine used by all of the other curses routines.

Reviewed by:	"Andrey A. Chernov, Black Mage" <ache@astral.msk.su>
1995-03-19 21:47:51 +00:00
joerg
af609f7535 libkvm exports kvm_uread(), so do declare it in the header file.
Got apparent by Philippe's -Wall patch for /usr/bin.
1995-03-19 13:36:49 +00:00
joerg
d2c55744e4 Cast the offset of one call to lseek() to off_t, as it's already done
in all other places here.

This is a hack, the interface should be changed to use off_t's
everywhere around, but this will require to update all the programs
that happen to use libkvm.
1995-03-19 13:33:05 +00:00
phk
c1f6e1c619 add a couple of missing #include lines 1995-03-19 07:00:52 +00:00
wpaul
42a3c01e4d Two major changes:
- Added support for reading netgroups from NIS/YP in addition to the
local /etc/netgroups file. (Note that SunOS and many other systems only
support reading netgroups via NIS, which is a bit odd.)

- Fix Evil Null Pointer Dereferences From Hell (tm) that caused
parse_netgrp() to SEGV when expanding netgroups that include
references to other netgroups. Funny how nobody else noticed this.

This is the first step in implimenting +@netgroup substitution in
getpwent.c and any other places that could use it and don't already
support it (which is probably everywhere).
1995-03-19 06:16:03 +00:00
ache
c7e4543129 Fix authunix_maxgrouplist test
Submitted by: Scott Hazen Mueller <scott@zorch.sf-bay.org>
1995-03-18 17:55:03 +00:00
rgrimes
33aef88532 Remove private mkdir for /usr/include/ss, no handled by mtree. 1995-03-18 08:34:42 +00:00
wpaul
af3a4131b5 Fix 'putting +: in /etc/group causes many programs to dump core' bug
by heading off possible null pointer dereferences in grscan(). Also
change getgrnam() slightly to properly handle the change: if grscan()
returns an rval of 1 and leaves a '+' in the gr_name field and YP is
enabled, poll the YP group.byname map before giving up. This should
insure that we make every effort to find a match in the local and
YP group databases before bailing out.
1995-03-18 05:03:10 +00:00
wpaul
d92cb48248 Repeat after me kids: "I will not try to install files into a directory
when I'm not sure whether or not that directory exists."

Today I discovered that rebuilding /usr/include completely from scratch
doesn't work, because the libss Makefile tries to install headers into
/usr/include/ss, which 'make includes' does not create. The result is that
the libss Makefile plants the header files in /usr/include as individual
files called 'ss,' with the second one overwriting the first, and the
third one overwriting the second. So instead of a directory called
/usr/include/ss, you end up with just one file called /usr/include/ss with
only the last header file in it. Check out /usr/include/ss on freefall
and you'll see what I mean.

I've modified the beforeinstall target in the libss Makefile to check
for the presence of the ${DESTDIR}/usr/include/lbss directory and to
create it if it isn't already there. Hopefully I did it right.
1995-03-15 01:33:05 +00:00
ache
1b91eb6f54 Fix wbkgdset macro
Submitted by: Andreas Wetzel <mickey@deadline.snafu.de>
1995-03-13 19:02:04 +00:00
bde
db2028940b Remove `|| flags & ALT == 0' which was an obscure no-op, not a
parenthesization/precedence bug.
1995-03-12 13:53:51 +00:00
bde
498e010b3a Obtained from: 1.1.5. Originally by jtc. Cosmetically changed for this
commit by bde.

Fix bugs in floating point formatting.  The 4.4lite version is similar
to revision 1.3 in old-cvs and is missing all of jtc's fixes in revision
1.4 in old-cvs.  Revision 1.2 in ncvs fixed one of the old bugs but
introduced at least one new one (for %.0e).

old-cvs log:
revision 1.4
date: 1993/11/04 19:38:22;  author: jtc;  state: Exp;  lines: +33 -20
My work from NetBSD to make printf() & friends ANSI C compliant.
Fixes several bugs in floating point formatting:
  1. Trailing zeros were being stripped with %e format.
  2. %g/%G formats incorrect.
  3. Lots of other nits.
1995-03-12 13:26:49 +00:00
ache
644d3b582f Fix suspended vipw hangs
Obtained from: NetBSD
1995-03-09 21:53:12 +00:00
ache
75e8048c23 stdio.h --> unistd.h 1995-03-09 17:45:23 +00:00
bde
056d7133a8 Obtained from: NetBSD
Remove common sources from ${SRCS} when they are replaced by arch-specific
sources.
1995-03-08 01:41:40 +00:00
bde
54b7f88a16 Don't build swab.o here. It gets built in libc/i386/string. Previously
the copy built from here was overwritten by the other copy and the other
copy was put in library-building command lines twice.  ld now objects to
duplicated modules.
1995-03-07 04:19:11 +00:00
nate
112ef6e028 If we are going to set the OBJS target, don't add to the old target. This
caused the RPC libraries to contain two versions of the same file.
1995-03-04 17:39:24 +00:00
ache
09b78a5269 Solve conflict between two global force variables 1995-03-03 02:34:14 +00:00
joerg
e8c06a9513 On snap 950210, format %s (print seconds from the epoch) is missing
from the code in strftime.c . This affects both the library code
and all the commands using it (e.g. date +%s).

Note that %s is not required by ANSI, but we've already got it in 1.1.5.1.

Suggested by: luigi@labinfo.iet.unipi.it (Luigi Rizzo)
1995-03-01 23:08:40 +00:00
paul
d381c0681f Pull old lex.l out of attic and update to new one. 1995-03-01 08:25:40 +00:00
paul
e5372aca25 Completely rewrite libforms so everything is done at runtime rather
than at compile time.

Should have same functionality as old libforms but with new mechanism.

Lots of new features that use the new mechanism are still to be added.
1995-03-01 08:19:06 +00:00
jkh
4d71750d42 Additions from Thomas Graichen to mention each functions' floating point
counterpart.
Submitted by:	Thomas Graichen <graichen@sirius.physik.fu-berlin.de>
1995-03-01 05:06:48 +00:00
bde
a43c038744 Fix previous fix to agree with the man page - don't report errors in
kvm_open() if errstr is NULL.
1995-02-25 16:44:01 +00:00
bde
17a5fa641e Don't attempt to lstat() the POSIXLY invalid empty pathname.
realpath() still accepts "" as an arg and converts it to a canonical
pathname for the current directory.
1995-02-25 16:06:07 +00:00
phk
1b262ea352 Explain the full story, and make it understandable too. 1995-02-25 04:43:20 +00:00
phk
cbb4f63628 Clean a bunch of -Wall warnings. 1995-02-24 08:51:34 +00:00
phk
5ca4449181 Remove some unused variables and fix two blatant core dump triggers. 1995-02-24 08:15:27 +00:00
phk
a96d1683ee Remove an unused variable. 1995-02-24 07:51:13 +00:00
phk
a219345607 fix the synopsis to show
|     void
|    *signal(int sig, void (*func)(int))

instead of

|     void
|     *signal(sig, func())
|
|     void
|     (*func)()
1995-02-24 07:35:49 +00:00
ache
18a5653682 Add missing #include <time.h> with time() prototype 1995-02-24 01:02:59 +00:00
ache
d70484c276 Fix typo: pcap.h.h 1995-02-23 18:47:06 +00:00
phk
9bf4b628ff Quench a warning and fix some duplicity by using the official strerror
routine, instead of rolling our own.
1995-02-23 06:55:14 +00:00
olah
f0c34d41d1 Fix bogus Makefile which resulted in incompatible shared and static
libs.

Reviewed by:	Michael Reifenberger <root@rz-wb.fh-sw.de>,
		roberto@blaise.ibp.fr (Ollivier ROBERT)
1995-02-21 10:46:34 +00:00
phk
361ca08e0d Speed md5 up around 30% by shorting out a couple of cumbersome
memcpy equivalent functions.
1995-02-21 06:01:49 +00:00
nate
45d8ca0c0f Make libcompat a static only library.
Since functions will come and go from libcompat as they are deprecated
it makes no sense to build a shared library out of it as it will change.

Based on freedback from Terry and Jonas on the mailing lists.
1995-02-20 18:19:50 +00:00
ache
4fd94cf795 Minor optimization. 1995-02-18 11:36:33 +00:00
ache
91ff8e2365 Minor optimization 1995-02-18 01:42:02 +00:00
ache
b122bfda1b Copyrights cleanup 1995-02-18 01:39:00 +00:00
se
c8edfbda77 Bruce pointed out, that a misleading warning would be issued
in an (unlikely) border case (maxgroups==1 and the user is on
an /etc/group line for the same group and that group only ...).

Now this case is dealt with as before ...
1995-02-17 19:45:21 +00:00
se
ecb476bce3 Protect against duplicate gids in group list (as could be the
result of being a member of some group in both /etc/group and YP).
1995-02-17 17:36:09 +00:00
ache
c0479ff88e Don't pick _warn module now 1995-02-17 16:36:12 +00:00
ats
a40b30676a Correct the parameters for the fchown. The third was erroneously
specified as uid_t but should be gid_t.
1995-02-17 00:41:30 +00:00
ache
308515c3f8 Add 8bit collate stuff
Submitted by: alex@elvisti.kiev.ua
1995-02-16 17:01:11 +00:00
ache
472ef98cfb Add 8-bit collate stuff
Submitted by: alex@elvisti.kiev.ua
1995-02-16 04:24:39 +00:00
wollman
668541d9ec Document Transaction TCP extensions to generic system calls. 1995-02-15 22:53:04 +00:00
ache
76d019c170 Add missing lib_window.c to SRCS 1995-02-13 17:23:18 +00:00
phk
56d22b3beb Fix broken makefile. 1995-02-12 02:35:35 +00:00
jkh
87505148a9 Support for >32 PTYs.
Submitted by:	Heikki Suonsivu <hsu@cs.hut.fi>
1995-02-09 11:11:01 +00:00
jkh
a23ae9f606 Install the header files. 1995-02-09 08:00:20 +00:00
bde
1676ed0440 CLEANFILES was missing a few files. 1995-02-08 21:11:39 +00:00
bde
0279eb2145 Add libpcap. I don't know what it is doing in the tree, but it has
settled for too long.  Compiling it gives 142 lines of compiler
warnings.  Perhaps the dirt will be fixed if it is visible.
1995-02-08 20:46:53 +00:00
jkh
66c6af057e Add two parts of Mark's/Gary's dlopen() changes that I missed before. 1995-02-08 17:56:27 +00:00
jkh
dcc217c4ac Support for more Sun compatible dlopen() and friends. Also added proper error
handling.
Reviewed by:    gj
Submitted by:   Mark Diekhans <markd@grizzly.com>
1995-02-07 13:27:29 +00:00
dg
82caf4596d Backed out Keith Bostic's getcwd/$PWD hack. It is causing things to break
all over the place.
1995-02-07 05:52:57 +00:00
phk
184bec765a Document the getenv(PWD) feature. 1995-02-05 18:14:38 +00:00
wpaul
30b1b88a7d Collapsed _masterpw_breakout_yp() and _pw_breakout_yp() into a
single function.
1995-02-05 02:12:49 +00:00
phk
d0412fbe28 A cute hack to speed up things by Keith: if getenv("PWD") is the same
inode as ".", then just return that.  I added a check so it must start with
a '/'.

Reviewed by:	phk
Submitted by:	bostic@cs.berkeley.edu (Keith Bostic)
1995-02-04 19:29:22 +00:00
bde
9c1563f3c3 Include <time.h> instead of <sys/time.h> to get CLK_TCK. Including
<sys/time.h> works because <sys/time.h> includes <time.h> if KERNEL
is not defined, but is ugly.
1995-02-03 22:28:34 +00:00
bde
dc81150269 Change CLK_TCK to CLOCKS_PER_SEC.
Add a missing apostrophe that suggests inverting the frequency to get
tick size.  It read better before because `CLK_TCK' suggests a tick
size although it is actually a frequency.
1995-02-03 22:09:56 +00:00
bde
479b8b6181 Change CLK_TCK to CLOCKS_PER_SEC. (CLK_TCK is a deprecated POSIX feature
and is not necessarily related to the ANSI CLOCKS_PER_SEC).

Parenthesize macro args.
1995-02-03 21:59:45 +00:00
bde
5859d904d1 Fix previous change to preserve const'ness. 1995-02-03 21:54:03 +00:00
wpaul
a3287587cb Fixed a rather serious bug that presents itself when FreeBSD is configured
as an NIS client. The pw_breakout_yp routines that are used to populate the
_pw_passwd structire only do anything if the bits in the pw_fields member
_pw_passwd are cleared. Unfortunately, we can get into a state where
pw_fields has garbage in it right before the YP lookup functions are
called, which causes the breakout functions to screw up in a big way.
Here's how to duplicate the problem:

- Configure FreeBSD as an NIS client
- Log in as a user who's password database records reside only in
  the NIS passwd maps.
- Type ps -aux

Result: your processes appear to be owned by 'root' or 'deamon.'
/bin/ls can exhibit the same problem.

The reason this happens:

- When ps(1) needs to match a username to a UID, it calls getpwuid().

- root is in the local password file, so getpwuid() calls  __hashpw()
  and __hashpw() populates the _pw_passwd struct, including the pw_fields
  member. This happens before NIS lookups take place because, by coincidence,
  ps(1) tends to display processes owned by root before it happens upon
  a proccess owned by you.

- When your UID comes up, __hashpw() fails to find your entry in the
  local password database, so it bails out, BUT THE BITS IN THE pw_fields
  STRUCTURE OF _pw_passwd ARE NEVER CLEARED AND STILL CONTAIN INFORMATION
  FROM THE PREVIOUS CALL TO __hash_pw()!!

- If we have NIS enabled, the NIS lookup functions are called.

- The pw_breakout_yp routines see that the pw_fields bits are set and
  decline to place the data retrieved from the NIS passwd maps into the
  _pw_passwd structure.

- getpwuid() returns the results of the last __hashpw() lookup instead
  of the valid NIS data.

- Hijinxs ensue when user_from_uid() caches this bogus information and
  starts handing out the wrong usernames.

AAAARRRRRRRRRGGGGGGHHHHHHHHHH!!!

*Please* don't tell me I'm the only person to have noticed this.

Fixed by having __hashpw() check the state of pw_fields just before
bailing out on a failed lookup and clearing away any leftover garbage.
What a fun way to spend an afternoon.
1995-02-03 01:09:35 +00:00
wpaul
1818a0c4e1 Fix for that last fix... pass the hat. :) 1995-02-01 20:09:00 +00:00
wpaul
58429fdc31 Small fix to _getyppass(): sometimes we can construct the wrong mapname
when looking for master.passwd.whatever.
1995-02-01 20:06:33 +00:00
paul
0305d2ddc1 Implemented height field for text fields so they can now be more than
one line long.

Fixed a bug in the input field with cursor positioning at the end of
the field.

Make the print_status function available to apps so they can print
status messages.

Updated the example for the new fib parser.
1995-02-01 04:06:37 +00:00
wpaul
5902fd25c2 Some changes for YP password map handling:
- FreeBSD's NIS server can supply a master.passwd map, which has
  more fields in it than a standard passwd map, so we need a
  _master_pw_breakout() fuction.

- When doing passwd map lookups, look for master.passwd.* by attempting
  a _yp_first() on master.passwd.byname. If it exists, we're being served
  by a FreeBSD NIS server and we should use this map.

- If we aren't the superuser, retrieve only the standard passwd maps.
  If we're being served by a FreeBSD system, then the passwd map has
  no passwords in it, and it won't serve us the master.passwd map unless
  we're superuser anyway.

There's a small speed hit for the superuser inherent in the check for
the master.passwd map, but this lets us dynamically decide what to do
rather than rely on a non-standard config file somewhere. Since all
of this is bypassed for normal users, they shouldn't notice the
difference.
1995-01-31 10:04:18 +00:00
paul
98c415953e Add all the necessary bits to use color if the terminal allows it.
You can now specify separate attributes for selected/not selected
cases individually for each field and also an attr for the form as
a whole so you can now have colored backgrounds for the form and
different coloured fields etc.

Update the example.

Change the copyright to a BSD style one.
1995-01-30 02:41:29 +00:00
dg
7e03208067 Be sure to properly fail if there are not enough fields. Problem
reported by MARC Giannoni <marc@cmc.eng.comsat.com>, this fix is by me.
1995-01-27 22:30:03 +00:00