[net.bugs.v7] uuxqt bug

scw@cepu.UUCP (05/25/84)

There is a bug in uuxqt.c involving *LONG* mail paths, or long command lines;

    SYSTEMS Affected:
	v7, v7m, Ultrix-11(??), 2.8BSD, 2.9BSD(??); Anyone with v7 derived
	uucp (?probably);
    Symptoms:
	uuxqt (UUXQT) vanishes leaving LCK.XQT and  a 0 length core in
	/usr/spool/uucp or a real core file (depending on who actually invoked
	it and the permisions on /usr/lib/uuxqt) that has the C back frames
	scrogged.
    Cause:
	While parsing the command line the mail path (argument to rmail)
	tramples on the stack. Actually it gets copied to a char[] that is
	too short.
    Repeat by:
	Send a message with more that MAXFULLNAME (uucp.h) characters in the
	path. A system with this problem will be unable to pass the message on.
	  -or-
	Generate a bogus X.system1234 file with a long (>MAXFULLNAME) X line
	in it.  then manually invoke uuxqt with -x4 to watch it die with a
	segementation violation.
    Fix:
	change line ~~40 from:
	char xcmd[100];
	to:
	char xcmd[BUFSIZ];

	Change line ~~50 from:
	char *cmdp, prm[MAXFULLLNAME],*ptr;
	to:
	char *cmdp, prm[BUFSIZ],*ptr;

	This fix will allow command lines to be up to 511 char long.
-- 
Stephen C. Woods (VA Wadsworth Med Ctr./UCLA Dept. of Neurology)
uucp:	{ {ihnp4, uiucdcs}!bradley, hao, trwrb, sdcsvax!bmcg}!cepu!scw
ARPA: cepu!scw@ucla-locus       location: N 34 06'37" W 118 25'43"

scw@cepu.UUCP (05/25/84)

There is a bug in uuxqt.c involving very long execute times (with many executes)
    SYSTEMS Affected:
	v7, v7m, Ultrix-11(??), 2.8BSD, 2.9BSD(??); Anyone with v7 derived
	uucp (?probably);
    Symptoms:
	Several copies if uuxtq run simultaniously.
    Cause:
	uuxtq doen't update the lock (LCK.XQT) between processes.
    Repeat by:
	Exec several files (so that total execute time is longer than
	the X_LOCKTIME (uucp.h). This can happen if you get several
	days worth of news into your system when it's very busy.
    Fix:
	Make the following changes to uuxqt.c to update X_LOCK just before
	every search/execute cycle.

--- uuxqt.c.B	Wed Jan 18 13:13:04 1984
*** uuxqt.c	Thu May 24 13:18:25 1984
***************
--- 50,55 -----
  	char *getprm();
  	int uid, ret;
  	int stcico = 0;
  	Debug = 0;

*** 50,56
  	int uid, ret;
+ 	long now,timep[2];		/* to update lock file*/
  	int stcico = 0;

***************
--- 81,86 -----
  	while (gtxfile(xfile) > 0) {
  		DEBUG(4, "xfile - %s\n", xfile);
  
  		xfp = fopen(xfile, "r");
  		ASSERT(xfp != NULL, "CAN'T OPEN %s", xfile);
  
*** 83,91
  	while (gtxfile(xfile) > 0) {
  		DEBUG(4, "xfile - %s\n", xfile);
  
+ 		time(&now);			/* get time */
+ 		timep[0]=timep[1]=now;		/* set up table */
+ 		utime(X_LOCK,timep);		/* and fix lock time up*/
  		xfp = fopen(xfile, "r");
  		ASSERT(xfp != NULL, "CAN'T OPEN %s", xfile);
-- 
Stephen C. Woods (VA Wadsworth Med Ctr./UCLA Dept. of Neurology)
uucp:	{ {ihnp4, uiucdcs}!bradley, hao, trwrb, sdcsvax!bmcg}!cepu!scw
ARPA: cepu!scw@ucla-locus       location: N 34 06'37" W 118 25'43"