Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Dec 1999 07:42:05 +0100
From:      Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
To:        Alfred Perlstein <bright@wintelcom.net>
Cc:        Andre Albsmeier <andre.albsmeier@mchp.siemens.de>, Warner Losh <imp@village.org>, Garance A Drosihn <drosih@rpi.edu>, current@FreeBSD.ORG
Subject:   Re: NO! Re: [PATCHES] Two fixes for lpd/lpc for review and test
Message-ID:  <19991210074205.B12325@internal>
In-Reply-To: <Pine.BSF.4.21.9912091427240.4557-100000@fw.wintelcom.net>; from bright@wintelcom.net on Thu, Dec 09, 1999 at 03:02:41PM -0800
References:  <19991209153320.A62121@internal> <Pine.BSF.4.21.9912091427240.4557-100000@fw.wintelcom.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 09-Dec-1999 at 15:02:41 -0800, Alfred Perlstein wrote:
> On Thu, 9 Dec 1999, Andre Albsmeier wrote:
> 
> ...
>
> > For better reference, here is the current patch:
> > 
> > *** lpr.c.ORI	Thu Dec  9 15:30:18 1999
> > --- lpr.c	Thu Dec  9 15:30:35 1999
> > ***************
> > *** 370,375 ****
> > --- 370,405 ----
> >   		}
> >   		if (sflag)
> >   			printf("%s: %s: not linked, copying instead\n", name, arg);
> > + 		/*
> > + 		 * If lpr was invoked with -r we try to move the file to
> > + 		 * be printed instead of copying and deleting it later.
> > + 		 * This works if the file and lpd's spool directory are
> > + 		 * on the same filesystem as it is often the case for files
> > + 		 * printed by samba or pcnfsd. In this case, a lot of I/O
> > + 		 * and temporary disk space can be avoided. Otherwise, we
> > + 		 * will continue normally.
> > + 		 */
> > + 		if (f) {			/* file should be deleted */
> > + 			seteuid(euid);		/* needed for rename() */
> > + 			if (!rename(arg, dfname)) {
> > + 				int i;
> > + #if 0
> > + 				chown(dfname, userid, getegid());
> > + 				chmod(dfname, S_IRUSR | S_IWUSR |
> > + 				    S_IRGRP | S_IWGRP);
> > + #endif
> > + 				seteuid(uid);	/* restore old uid */
> > + 				if (format == 'p')
> > + 					card('T', title ? title : arg);
> > + 				for (i = 0; i < ncopies; i++)
> > + 					card(format, &dfname[inchar-2]);
> > + 				card('U', &dfname[inchar-2]);
> > + 				card('N', arg);
> > + 				nact++;
> > + 				continue;
> > + 			}
> > + 			seteuid(uid);		/* restore old uid */
> > + 		}
> >   		if ((i = open(arg, O_RDONLY)) < 0) {
> >   			printf("%s: cannot open %s\n", name, arg);
> >   		} else {
> > 
> > 
> 
> I don't have too much time to think about this, argue me this:

Sure, please tell me if you don't want to get CC'ed on this anymore.

> 
> why should I allow a user to print any file on the system?
> 
> the race condition is still there.

Right :-(. The file won't be given to the user anymore but he can
print everything. However, there must be a solution for this...

> 
> -Alfred
> 

	-Andre


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991210074205.B12325>