getpwnam bug

Root Boy Jim rbj at icst-cmr.arpa
Thu Aug 28 02:27:32 AEST 1986


	Anybody ever had a blank line as the first line in your
	password file? It happened to me a few weeks ago and the system
	would not let any user at all log on. Su did not work either.
	In looking at the source I found the following situation:

		getty: calls
		  login: calls
		    getpwnam: calls
		      getpwent: calls
			fgetpwent: which does the following 
	
			p = fgets(line, BUFSIZ, f);
			if (p == NULL)
	  		    return(NULL);
	 
	Since fgets returns NULL if error or end-of-file or if p read 0
	bytes it seems that the search done by fgetpwent terminates
	without searching any further, even though there are further
	valid entries. Is this the way getpwnam always works? (I am
	currently running 4.2BSD/SYS III on a vax 780). I have not seen
	any bug reports filed on this particular problem. Now while
	getting a null entry in the passwd file may be an infrequent
	occurence the only way to recover this is to crash the system
	and come up single-user to repair the passwd file. Thankfully
	my system doesn't prompt for an id coming into single-user mode
	like some systems I've seen. Under that case I think you would
	have no recourse but to restore from a backup.

You are wrong on both accounts. I added a blank line at the head
of my /etc/passwd with no problems. Also, fgets returns a pointer
to a line containing only a newline when reading a blank line.

We run vanilla 4.2BSD on a VAX 750. Perhaps it is the SYS III part
of your system that is messing up, altho I doubt for the reasons
you mention. Fgets is too old a routine to have variations.

	What I think is odd here is that there are other version of
	getpwnam in other utilites that implement the read differently.
	For example:  csh/getpwnam implements the fgets as i =
	read(pwf, line, BUFSIZ).

	Anybody know why csh chose not to use the pw routines?
			
Perhaps it is because of efficiency.

	(Root Boy) Jim Cottrell		<rbj at icst-cmr.arpa>
	..I have read the INSTRUCTIONS...

P.S. Say hi to my dad (same name) if you know him.



More information about the Comp.unix.wizards mailing list