Apply by doing: cd /usr/src patch -p0 < 014_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/common_source/displayq.c =================================================================== RCS file: /cvs/src/usr.sbin/lpr/common_source/displayq.c,v retrieving revision 1.10 diff -u -r1.10 displayq.c --- usr.sbin/lpr/common_source/displayq.c 1998/06/23 22:40:34 1.10 +++ usr.sbin/lpr/common_source/displayq.c 2001/08/29 21:44:02 @@ -75,8 +75,8 @@ extern uid_t uid, euid; static int col; /* column on screen */ -static char current[40]; /* current file being printed */ -static char file[132]; /* print file name */ +static char current[MAXPATHLEN]; /* current file being printed */ +static char file[MAXPATHLEN]; /* print file name */ static int first; /* first file in ``files'' column? */ static int garbage; /* # of garbage cf files */ static int lflag; /* long output option */ @@ -95,7 +95,7 @@ { register struct queue *q; register int i, nitems, fd, ret, len; - register char *cp; + register char *cp, *ecp; struct queue **queue; struct stat statb; FILE *fp; @@ -168,8 +168,11 @@ else { /* get daemon pid */ cp = current; - while ((i = getc(fp)) != EOF && i != '\n') - *cp++ = i; + ecp = cp + sizeof(current) - 1; + while ((i = getc(fp)) != EOF && i != '\n') { + if (cp < ecp) + *cp++ = i; + } *cp = '\0'; i = atoi(current); if (i <= 0) { @@ -184,8 +187,11 @@ } else { /* read current file name */ cp = current; - while ((i = getc(fp)) != EOF && i != '\n') - *cp++ = i; + ecp = cp + sizeof(current) - 1; + while ((i = getc(fp)) != EOF && i != '\n') { + if (cp < ecp) + *cp++ = i; + } *cp = '\0'; /* * Print the status file.