From niels@biddles.its.unimelb.edu.au  Tue Mar 14 21:28:29 2000
Return-Path: <niels@biddles.its.unimelb.edu.au>
Received: from biddles.its.unimelb.edu.au (biddles.its.unimelb.edu.au [128.250.146.98])
	by hub.freebsd.org (Postfix) with ESMTP id BD60C37B90C
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 14 Mar 2000 21:28:16 -0800 (PST)
	(envelope-from niels@biddles.its.unimelb.edu.au)
Received: (from root@localhost)
	by biddles.its.unimelb.edu.au (8.9.3/8.9.3) id QAA03127;
	Wed, 15 Mar 2000 16:28:13 +1100 (EST)
	(envelope-from niels)
Message-Id: <200003150528.QAA03127@biddles.its.unimelb.edu.au>
Date: Wed, 15 Mar 2000 16:28:13 +1100 (EST)
From: Niels.Endres@biddles.its.unimelb.edu.au
Sender: niels@biddles.its.unimelb.edu.au
Reply-To: niels@b5.nu
To: FreeBSD-gnats-submit@freebsd.org
Subject: patch for lpd to add -p option to disable internet sockets
X-Send-Pr-Version: 3.2

>Number:         17384
>Category:       misc
>Synopsis:       patch for lpd to add -p option to disable internet sockets
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    sheldonh
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 14 21:30:02 PST 2000
>Closed-Date:    Sun Aug 6 12:49:13 PDT 2000
>Last-Modified:  Sun Aug 06 12:49:46 PDT 2000
>Originator:     Niels Endres
>Release:        FreeBSD 3.4-RELEASE i386
>Organization:
>Environment:
N/A
>Description:
patch for lpd to add -p option to disable internet sockets
>How-To-Repeat:
N/A
>Fix:

*** lpd.c.orig	Wed Mar 15 15:36:00 2000
--- lpd.c	Wed Mar 15 15:43:22 2000
***************
*** 104,109 ****
--- 104,110 ----
  #include "extern.h"
  
  int	lflag;				/* log requests flag */
+ int	pflag;				/* no incoming port flag */
  int	from_remote;			/* from remote socket */
  
  int		  main __P((int, char **));
***************
*** 136,141 ****
--- 137,143 ----
  	euid = geteuid();	/* these shouldn't be different */
  	uid = getuid();
  	options = 0;
+ 	pflag = 0;
  	gethostname(host, sizeof(host));
  
  	name = "lpd";
***************
*** 144,150 ****
  		errx(EX_NOPERM,"must run as root");
  
  	errs = 0;
! 	while ((i = getopt(argc, argv, "dl")) != -1)
  		switch (i) {
  		case 'd':
  			options |= SO_DEBUG;
--- 146,152 ----
  		errx(EX_NOPERM,"must run as root");
  
  	errs = 0;
! 	while ((i = getopt(argc, argv, "dlp")) != -1)
  		switch (i) {
  		case 'd':
  			options |= SO_DEBUG;
***************
*** 152,157 ****
--- 154,163 ----
  		case 'l':
  			lflag++;
  			break;
+ 			
+ 		case 'p':
+ 			pflag++;
+ 			break;
  		default:
  			errs++;
  		}
***************
*** 278,299 ****
  	FD_ZERO(&defreadfds);
  	FD_SET(funix, &defreadfds);
  	listen(funix, 5);
! 	finet = socket(AF_INET, SOCK_STREAM, 0);
! 	if (finet >= 0) {
! 		if (options & SO_DEBUG)
! 			if (setsockopt(finet, SOL_SOCKET, SO_DEBUG, 0, 0) < 0) {
! 				syslog(LOG_ERR, "setsockopt (SO_DEBUG): %m");
  				mcleanup(0);
  			}
! 		memset(&sin, 0, sizeof(sin));
! 		sin.sin_family = AF_INET;
! 		sin.sin_port = sp->s_port;
! 		if (bind(finet, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
! 			syslog(LOG_ERR, "bind: %m");
! 			mcleanup(0);
  		}
- 		FD_SET(finet, &defreadfds);
- 		listen(finet, 5);
  	}
  	/*
  	 * Main loop: accept, do a request, continue.
--- 284,310 ----
  	FD_ZERO(&defreadfds);
  	FD_SET(funix, &defreadfds);
  	listen(funix, 5);
! 	if (pflag == 0) {
! 		finet = socket(AF_INET, SOCK_STREAM, 0);
! 		if (finet >= 0) {
! 			if (options & SO_DEBUG)
! 				if (setsockopt(finet, SOL_SOCKET,
! 				  SO_DEBUG, 0, 0) < 0) {
! 					syslog(LOG_ERR, "setsockopt
! 					  (SO_DEBUG): %m");
! 					mcleanup(0);
! 				}
! 			memset(&sin, 0, sizeof(sin));
! 			sin.sin_family = AF_INET;
! 			sin.sin_port = sp->s_port;
! 			if (bind(finet, (struct sockaddr *)&sin,
! 			  sizeof(sin)) < 0) {
! 				syslog(LOG_ERR, "bind: %m");
  				mcleanup(0);
  			}
! 			FD_SET(finet, &defreadfds);
! 			listen(finet, 5);
  		}
  	}
  	/*
  	 * Main loop: accept, do a request, continue.
***************
*** 318,324 ****
  			domain = AF_UNIX, fromlen = sizeof(fromunix);
  			s = accept(funix,
  			    (struct sockaddr *)&fromunix, &fromlen);
! 		} else /* if (FD_ISSET(finet, &readfds)) */  {
  			domain = AF_INET, fromlen = sizeof(frominet);
  			s = accept(finet,
  			    (struct sockaddr *)&frominet, &fromlen);
--- 329,335 ----
  			domain = AF_UNIX, fromlen = sizeof(fromunix);
  			s = accept(funix,
  			    (struct sockaddr *)&fromunix, &fromlen);
! 		} else if (pflag == 0) /* if (FD_ISSET(finet, &readfds)) */  {
  			domain = AF_INET, fromlen = sizeof(frominet);
  			s = accept(finet,
  			    (struct sockaddr *)&frominet, &fromlen);
***************
*** 339,345 ****
  			signal(SIGQUIT, SIG_IGN);
  			signal(SIGTERM, SIG_IGN);
  			(void) close(funix);
! 			(void) close(finet);
  			dup2(s, 1);
  			(void) close(s);
  			if (domain == AF_INET) {
--- 350,358 ----
  			signal(SIGQUIT, SIG_IGN);
  			signal(SIGTERM, SIG_IGN);
  			(void) close(funix);
! 			if (pflag == 0) {
! 				(void) close(finet);
! 			}
  			dup2(s, 1);
  			(void) close(s);
  			if (domain == AF_INET) {
***************
*** 629,634 ****
  static void
  usage()
  {
! 	fprintf(stderr, "usage: lpd [-dl] [port#]\n");
  	exit(EX_USAGE);
  }
--- 642,647 ----
  static void
  usage()
  {
! 	fprintf(stderr, "usage: lpd [-dlp] [port#]\n");
  	exit(EX_USAGE);
  }







*** lpd.8.orig	Wed Mar 15 15:47:12 2000
--- lpd.8	Wed Mar 15 15:53:18 2000
***************
*** 40,46 ****
  .Nd line printer spooler daemon
  .Sh SYNOPSIS
  .Nm lpd
! .Op Fl dl
  .Op Ar port#
  .Sh DESCRIPTION
  .Nm Lpd
--- 40,46 ----
  .Nd line printer spooler daemon
  .Sh SYNOPSIS
  .Nm lpd
! .Op Fl dlp
  .Op Ar port#
  .Sh DESCRIPTION
  .Nm Lpd
***************
*** 73,78 ****
--- 73,84 ----
  .Nm
  to log valid requests received from the network. This can be useful
  for debugging purposes.
+ .It Fl p
+ The
+ .Fl p
+ flag causes
+ .Nm
+ not to open an Internet listening socket.
  .It Ar "port#"
  The Internet port number used to rendezvous
  with other processes is normally obtained with

>Release-Note:
>Audit-Trail:

From: Sheldon Hearn <sheldonh@uunet.co.za>
To: niels@b5.nu
Cc: FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: misc/17384: patch for lpd to add -p option to disable internet sockets 
Date: Wed, 15 Mar 2000 10:59:39 +0200

 On Wed, 15 Mar 2000 16:28:13 +1100, Niels.Endres@biddles.its.unimelb.edu.au wro
 te:
 
 > patch for lpd to add -p option to disable internet sockets
 
 I like this.
 
 If nobody raises any concerns in the next week, I'll commit it.
 
 Ciao,
 Sheldon.
 
State-Changed-From-To: open->analyzed 
State-Changed-By: sheldonh 
State-Changed-When: Wed Mar 29 03:15:56 PST 2000 
State-Changed-Why:  
Your patch was committed in lpd.c rev 1.13 and lpd.8 rev 1.15.  I 
made a few stylistic changes to your lpd.c patch, but that  
should not have broken anything. :-) 


Responsible-Changed-From-To: freebsd-bugs->sheldonh 
Responsible-Changed-By: sheldonh 
Responsible-Changed-When: Wed Mar 29 03:15:56 PST 2000 
Responsible-Changed-Why:  
This is my reminder for an MFC later. 
State-Changed-From-To: analyzed->closed 
State-Changed-By: nbm 
State-Changed-When: Sun Aug 6 12:49:13 PDT 2000 
State-Changed-Why:  
MFC'd by ps in rev 1.12.2.1 of lpd.c 

http://www.freebsd.org/cgi/query-pr.cgi?pr=17384 
>Unformatted:
