[net.bugs.uucp] MORE UUCP BUGS

jca (01/15/83)

	MORE UUCP BUGS.

	BUG 1: UUX
		Have U had the problem with LOG.* files being left in
	/usr/spool/uucp directory. Well that only takes the addition
	of 2 lines of code. I will not go into a long winded explanation
	of how the LOG.* files are created in mode 0222 and later
	changed to mode 0666, U can get that out of the documentation.
	The problem is uux.c never changes the mode like it should on a
	good exit. The fix is in the subroutine cleanup(code).

	**************** THE ORIGINAL CODE LOOKED LIKE THIS *************

	cleanup(code)
	int code;
	{
		int i;
		void exit();

		rmlock(CNULL);
		if (code) {
			for (i = 0; i < Fnamect; i++)
				unlink(Fname[i]);
			fprintf(stderr, "uux failed. code %d\n", code);
			}
		DEBUG(1, "exit code %d\n", code);
		exit(code);
	}

	*************** THE NEW CODE SHOULD LOOK LIKE THIS *************

	cleanup(code)
	int code;
	{
		int i;
		void exit();

		rmlock(CNULL);
		if (code) {
			for (i = 0; i < Fnamect; i++)
				unlink(Fname[i]);
			fprintf(stderr, "uux failed. code %d\n", code);
			}
+		else
+			logcls();
		DEBUG(1, "exit code %d\n", code);
		exit(code);
	}

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

	BUG 2: UUXQT
		Have U had uuxqt to just quit, sometimes dropping core.
	Well the bug I found is because a character array buffer is not
	large enough. In uuxqt.c the allocation of (prm) is not large
	enough. It uses a define of MAXFULLNAME which is 100 in uucp.h.
	Well when U mail something using a long node-path name (USENET
	address) they can be larger than 100. I changed it to BUFSIZ
	which is default to 512 in stdio.h unless U define BUFSIZ before
	stdio.h is included.

	**************** THE ORIGINAL CODE LOOKED LIKE THIS *************

	main(argc, argv)
	char *argv[];
	{
		char xcmd[100];
		int argnok;
		char xfile[MAXFULLNAME], user[10], buf[BUFSIZ];
		char lbuf[30];
		char cfile[NAMESIZE], dfile[MAXFULLNAME];
		char file[NAMESIZE];
		char fin[MAXFULLNAME], sysout[NAMESIZE], fout[MAXFULLNAME];
		FILE *xfp, *dfp, *fp;
		char path[MAXFULLNAME];
		char cmd[BUFSIZ];
		char *cmdp, prm[MAXFULLNAME], *ptr;
		char *getprm(), *strrchr(), *lxp;
		int uid, ret, cret, badfiles;
		int stcico = 0;
		char retstat[30];

	*************** THE NEW CODE SHOULD LOOK LIKE THIS *************

	main(argc, argv)
	char *argv[];
	{
		char xcmd[100];
		int argnok;
		char xfile[MAXFULLNAME], user[10], buf[BUFSIZ];
		char lbuf[30];
		char cfile[NAMESIZE], dfile[MAXFULLNAME];
		char file[NAMESIZE];
		char fin[MAXFULLNAME], sysout[NAMESIZE], fout[MAXFULLNAME];
		FILE *xfp, *dfp, *fp;
		char path[MAXFULLNAME];
		char cmd[BUFSIZ];
!		char *cmdp, prm[BUFSIZ], *ptr;
		char *getprm(), *strrchr(), *lxp;
		int uid, ret, cret, badfiles;
		int stcico = 0;
		char retstat[30];

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


	Hope this will help with some of your uucp problems.

						Jack Allen
						Southern Bell T & T
						(404) 529-0911
						...!sb1!jca