[net.bugs.uucp] HELP! I need a fix for sV UUCICO

fair@dual.UUCP (Erik E. Fair) (02/09/84)

Ye Olde Bug with UUCICO.

	1. Find work to do.
	2. Call req'd system.
	3. Start transmitting.
	4. Transmit fails. (conversation complete)
	5. Find other work to do
	6. Call other system
	7. START RE-TRANSMITTING PREVIOUSLY UNCOMPLETED TRANSACTION,
		DESTINED FOR PREVIOUS SYSTEM!
	8. Programmer (hopefully!) notices, cries out in terror, and kills
		off uucico before the xmit finished.
	9. Anguished programmer posts plea to the network community for bug fix.

I know this one was fixed a very long time ago. So how in hell did it
get into System V Rel 0? I'm trying very hard to resist the urge to scream
bloody murder! I've spent the last five days inside the guts of System V
UUCP, and I have just about given up hope that I will ever see a sane
release of UUCP from USG. I HATE having to clean up other people's sloppy code.

Is someone out there in WE's licensing division listening? If so, get Peter
Honeyman's UUCP, and distribute it, PLEASE. I have better things to do than
to chase age old bugs, that I (and the rest of the network community) know
damn well have been fixed!

Maybe this is the time to go into some other wonders in the System V UUCP:

rkill.c:
	Has a routine in it called kill(). Wonderful, until you try and
	use the system call of the same name. References to this kill are
	made in uustat and uuclean. #ifdef'd references to kill(2) are made
	in cico.c

mailst.c:
	Look at the setuucp() routine carefully. Contemplate what will
	happen to the environment of LOGNAME isn't there. Guess what?
	Your whole environment gets nulled out. A simple pair of
	braces {} solves the whole thing. Very sloppy.

uuxqt.c:
	If LOGNAME isn't there, uuxqt just happily removes all the X.
	files and associated D. files that you just received from 
	some remote system.

uuclean.c:
cico.c:
uuxqt.c:
	Some damned idiot forgot to call tzset() in all of these.
	This may be OK in New Jersey, where the default timezone in
	the kernel is correct, but it don't wash out here in PST.

uuxqt.c:
	Another idiot forgot that TZ is among those things that should
	be passed to the programs that are executed by uuxqt. If any of
	them try and keep logs in a timezone other than EST, they will
	get the time of day wrong.

conn.c:
	One of the DEBUG lines in expect() is supposed to print out
	characters received from the remote system, and for any 
	character that's unprintable, print a '_'. However, it
	doesn't work, because someone forgot that >= has
	higher operator precedence than & (bitwise and).

-----
If you get the impression that I'm mad at USG, BELL, AT&T, WE, and a
few other letters in the veritable alphabet soup, you're right.
They have no excuse for the kinds of things I am finding in their
code, because they have the resources to properly write, test, and
debug software, whereas I (by comparison) do not.


	Erik E. Fair

	dual!fair@BERKELEY.ARPA
	{ucbvax,ihnp4,cbosgd,amd70,zehntel,fortune,unisoft,onyx,its}!dual!fair
	Dual Systems Corporation, Berkeley, California

honey@down.UUCP (code 101) (02/09/84)

first, it's not peter honeyman's uucp, it's honey danber, formerly
known as the uucp of the future.

as far as your primary complaint is concerned, check anlwrk().  (i have
never seen the sys v version of uucp, but if i were to introduce that
bug, that's where i'd do it.)

concerning your other gripes, if you're not happy with uucp, do what we
did: re-write the sucker.

	peter honeyman

ps to eric:  i am sending (under separate cover) mcgeady's bug-and-fix list.