Prerequisites:
014_lpd.patch
Apply by doing:
cd /usr/src
patch -p0 < 017_lpd.patch
And then rebuild and install lpd:
cd usr.sbin/lpr/lpd
make obj
make depend
make
make install
If you are running lpd you will now need to kill and restart it.
OpenBSD does not start lpd in the default install.
Index: usr.sbin/lpr/lpd/recvjob.c
===================================================================
RCS file: /cvs/src/usr.sbin/lpr/lpd/recvjob.c,v
retrieving revision 1.13
diff -u -r1.13 recvjob.c
--- usr.sbin/lpr/lpd/recvjob.c 7 Feb 2001 20:40:46 -0000 1.13
+++ usr.sbin/lpr/lpd/recvjob.c 28 Nov 2001 18:57:29 -0000
@@ -180,12 +180,11 @@
*/
strncpy(cp + 6, from, sizeof(line) + line - cp - 7);
line[sizeof(line) -1 ] = '\0';
+ if (strchr(cp, '/'))
+ frecverr("readjob: %s: illegal path name", cp);
strncpy(tfname, cp, sizeof tfname-1);
tfname[sizeof tfname-1] = '\0';
tfname[0] = 't';
- if (strchr(tfname, '/'))
- frecverr("readjob: %s: illegal path name",
- tfname);
if (!chksize(size)) {
(void) write(1, "\2", 1);
continue;
@@ -207,15 +206,14 @@
size = size * 10 + (*cp++ - '0');
if (*cp++ != ' ')
break;
+ if (strchr(cp, '/'))
+ frecverr("readjob: %s: illegal path name", cp);
if (!chksize(size)) {
(void) write(1, "\2", 1);
continue;
}
(void) strncpy(dfname, cp, sizeof dfname-1);
dfname[sizeof dfname-1] = '\0';
- if (strchr(dfname, '/'))
- frecverr("readjob: %s: illegal path name",
- dfname);
(void) readfile(dfname, size);
continue;
}