SCCS-vsn: usr.sbin/lpr/lpd/lpd.c 5.12
#endif /* not lint */
#ifndef lint
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)lpd.c 5.11 (Berkeley) %G%";
+static char sccsid[] = "@(#)lpd.c 5.12 (Berkeley) %G%";
#include "pathnames.h"
int lflag; /* log requests flag */
#include "pathnames.h"
int lflag; /* log requests flag */
+int from_remote; /* from remote socket */
void mcleanup(), reapchild();
void mcleanup(), reapchild();
(void) close(finet);
dup2(s, 1);
(void) close(s);
(void) close(finet);
dup2(s, 1);
(void) close(s);
+ if (domain == AF_INET) {
+ from_remote = 1;
+ } else
+ from_remote = 0;
printjob();
break;
case '\2': /* receive files to be queued */
printjob();
break;
case '\2': /* receive files to be queued */
+ if (!from_remote) {
+ syslog(LOG_INFO, "illegal request (%d)", *cp);
+ exit(1);
+ }
printer = cp;
recvjob();
break;
printer = cp;
recvjob();
break;
displayq(cbuf[0] - '\3');
exit(0);
case '\5': /* remove a job from the queue */
displayq(cbuf[0] - '\3');
exit(0);
case '\5': /* remove a job from the queue */
+ if (!from_remote) {
+ syslog(LOG_INFO, "illegal request (%d)", *cp);
+ exit(1);
+ }
printer = cp;
while (*cp && *cp != ' ')
cp++;
printer = cp;
while (*cp && *cp != ' ')
cp++;