[net.bugs.uucp] uux bug with long system names + Fix

parmelee@cornell.UUCP (Larry Parmelee) (12/13/85)

Subject: uux bug with long system names + Fix
Index:	/usr/src/usr.bin/uucp/uux.c 4.3BSD beta

Description:
	When your uucp system name is longer than 7 characters, and
	uux takes its input from stdin, uux tries to change the 
	processing grade of a temporary file, but misses the proper
	character, screwing up the sequence number instead.  This can
	cause a number of data files to be sent into the same file on
	the remote system.
Repeat-By:
	Make your system name something like tanstaafl (9 characters).
	Issue a few uux commands which take their input from stdin,
	and look at the control files generated:
		::::::::::::::
		file: C.cornellC00f4
		::::::::::::::
		S D.tanstaaB00f2 D.tanstaaB00S2 bill - D.tanstaaB00f2 0666
		S D.tanstaaX00f0 X.tanstaaC00f3 bill - D.tanstaaX00f0 0666

		::::::::::::::
		file: C.cornellC00g4
		::::::::::::::
		S D.tanstaaB00g2 D.tanstaaB00S2 bill - D.tanstaaB00g2 0666
		S D.tanstaaX00g0 X.tanstaaC00g3 bill - D.tanstaaX00g0 0666
	
	Note that the local data file gets sent into the same remote
	file name "D.tanstaaB00S2" both times.  Say your favorite mantra.

Fix:
	Here's a context diff.  Maybe patch will work.  No promises,
	though.
	
*** /tmp/d12452	Fri Dec 13 13:58:11 1985
--- uux.c	Fri Dec 13 13:47:05 1985
***************
*** 188,194 ****
  		fclose(fpd);
  		strcpy(tfile, dfile);
  		if (strcmp(local, xsys) != SAME) {
! 			tfile[strlen(local) + 2] = 'S';
  			GENSEND(fpc, dfile, tfile, User, "", dfile);
  			cflag++;
  		}
--- 188,197 ----
  		fclose(fpd);
  		strcpy(tfile, dfile);
  		if (strcmp(local, xsys) != SAME) {
! 			int slen = strlen(local);
! 			if (slen > SYSNSIZE)
! 				slen = SYSNSIZE;
! 			tfile[slen + 2] = 'S';
  			GENSEND(fpc, dfile, tfile, User, "", dfile);
  			cflag++;
  		}