From nobody Mon May 25 17:03:03 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gPMdg6KSXz6fYJQ for ; Mon, 25 May 2026 17:03:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gPMdg4khcz442k for ; Mon, 25 May 2026 17:03:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1779728583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0kuHQw15/Zpa5Fn1WMHc7gL5bBSc16l4JXbt/FrI9LI=; b=Z1dje6TfC2XC7JRQ1DpEEHPP/635sZgszTaX370zj30MN6mfB/zoqvwdhOjeZ4xIfOszXx 4p71QXUBQMHmyIp4qAzLBr0yenlcVMFBzrUhivCH/F/mzLa1qRg4NOcpFSQdEwQJZWXDXn 7sh8wykJF2H3xDCIebZjhmnbMC1DaK0rv7M50ICwym9UHsmuZ7tC4sEXEJ+G3lmvzph8lY E65838SIbI7b6EXIKzAjL0YETcc4JC3Oe0/dAfzBasSDI2SAry6/52upp5s5jGRWYLRL7I I/8uGC74APLgOc3jBj2EoKP4iTphhIa99BFZH9KYwqD5U1owR/IjhXyEe4CMCw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1779728583; a=rsa-sha256; cv=none; b=UbJo1p4f3gCBW2d2JIG+oB2s9L/B9wduELzAQckUGu7heY1f8jAcA+T1kZHxZve855Rd6J 4A0MCw4qymXDrqHAmuzpHCF18tICX8Z921ruwzmnpnSv8VmS3NAO+rmv6qkcVAhP4cNV2N mSVvUX8hXL8YbCP+nOWfVU5tInEetxnsw9CGIOmCjuESWJnbd5TfMlnQuvJGX514rZFDSr mLuSJOfV1Ht/SO5rDw2NUSuEhXGNY+NCl/CEEazo6u1ndoNuz6PJaLVw6JOEPjg80EIqv1 f9LrzXjQ0CTFAlwlfMfhCKLTC2VVHJ5xX5sk/loVCuRnMg/IeaesyUIY1MlV2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1779728583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0kuHQw15/Zpa5Fn1WMHc7gL5bBSc16l4JXbt/FrI9LI=; b=tMMuUqZPoHUrsLZtynE6jBh9IvtHGivweBZn0aMeNReJCUzy1TTj7ly+iJdA/VNTxshgek z+C4OAkTeKDkccPUpEiQIBn5VpdG2r3oPRJrZRz5Dv8cuPpcRD3joVxWHi+hSoShOq0gYz i7Ldylad/AkXG7SFc70cTOEFp/hpL0ggWrh7KWTWQq407VAxenrRgI8qrxbfOmgjlmO0hO HkonLL9i6vHWy/Sstap1UpoaO0Dcsavr6bHHD2JteQHdB6wuWWkmg5hIfADYh7zfGeoNyu Qni4UrAKOje9aUWqP8S3pJ8PlnxsefdiDECQHYwQXluUX5N7Dr4jZiwp3pnmFQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gPMdg4BDXzqSn for ; Mon, 25 May 2026 17:03:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 38327 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 25 May 2026 17:03:03 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: c0cae7d8da50 - main - lpd: Restore ability to specify a port number List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c0cae7d8da50daa87af4cd6d7c9a2043343b506f Auto-Submitted: auto-generated Date: Mon, 25 May 2026 17:03:03 +0000 Message-Id: <6a1480c7.38327.207c9055@gitrepo.freebsd.org> The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=c0cae7d8da50daa87af4cd6d7c9a2043343b506f commit c0cae7d8da50daa87af4cd6d7c9a2043343b506f Author: Dag-Erling Smørgrav AuthorDate: 2026-05-25 16:51:31 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-05-25 16:52:16 +0000 lpd: Restore ability to specify a port number This has been broken since IPv6 support was added in 2000. We would validate the port number (which had to be a port number, but can now also be a service name) and then ignore it. MFC after: 1 week Fixes: 08829865f659 ("IPv6 support for lpr.") Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D57181 --- usr.sbin/lpr/lpd/lpd.8 | 19 ++++++++++--------- usr.sbin/lpr/lpd/lpd.c | 28 +++++++++------------------- 2 files changed, 19 insertions(+), 28 deletions(-) diff --git a/usr.sbin/lpr/lpd/lpd.8 b/usr.sbin/lpr/lpd/lpd.8 index 9d24a450ba0e..269ef3580ce7 100644 --- a/usr.sbin/lpr/lpd/lpd.8 +++ b/usr.sbin/lpr/lpd/lpd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd February 19, 2026 +.Dd May 25, 2026 .Dt LPD 8 .Os .Sh NAME @@ -35,7 +35,7 @@ .Nm .Op Fl cdlpsFW46 .Op Fl t Ar timeout -.Op Ar port# +.Op Ar port .Sh DEPRECATION NOTICE This facility is scheduled for removal prior to the release of .Fx 16.0 . @@ -143,13 +143,13 @@ Inet only. Inet6 only. .It Fl 46 Inet and inet6 (default). -.It Ar "port#" -The Internet port number used to rendezvous -with other processes is normally obtained with -.Xr getservbyname 3 -but can be changed with the -.Ar port# -argument. +.It Ar "port" +The Internet port number or service name used to rendezvous with other +processes. +Can be any number from 1 to 65,535 or any service name defined in +.Pa /etc/services . +Defaults to +.Li printer . .El .Pp Access control is provided by two means. @@ -346,6 +346,7 @@ but not under same administrative control. .Xr syslog 3 , .Xr hosts.lpd 5 , .Xr printcap 5 , +.Xr services 5 , .Xr chkprintcap 8 , .Xr lpc 8 , .Xr pac 8 diff --git a/usr.sbin/lpr/lpd/lpd.c b/usr.sbin/lpr/lpd/lpd.c index d1dcd0766a77..5550846dca18 100644 --- a/usr.sbin/lpr/lpd/lpd.c +++ b/usr.sbin/lpr/lpd/lpd.c @@ -101,7 +101,7 @@ static void startup(void); static void chkhost(struct sockaddr *_f, int _ch_opts); static int ckqueue(struct printer *_pp); static void fhosterr(int _ch_opts, char *_sysmsg, char *_usermsg); -static int *socksetup(int _af, int _debuglvl); +static int *socksetup(int _af, const char *portstr, int _debuglvl); static void usage(void); /* XXX from libc/net/rcmd.c */ @@ -124,7 +124,7 @@ main(int argc, char **argv) struct sockaddr_storage frominet; socklen_t fromlen; sigset_t omask, nmask; - struct servent *sp, serv; + const char *portstr = "printer"; int inet_flag = 0, inet6_flag = 0; euid = geteuid(); /* these shouldn't be different */ @@ -215,19 +215,9 @@ main(int argc, char **argv) if (errs) usage(); - if (argc == 1) { - if ((i = atoi(argv[0])) == 0) - usage(); - if (i < 0 || i > USHRT_MAX) - errx(EX_USAGE, "port # %d is invalid", i); - - serv.s_port = htons(i); - sp = &serv; + if (argc > 0) { + portstr = *argv++; argc--; - } else { - sp = getservbyname("printer", "tcp"); - if (sp == NULL) - errx(EX_OSFILE, "printer/tcp: unknown service"); } if (argc != 0) @@ -339,7 +329,7 @@ main(int argc, char **argv) FD_SET(funix, &defreadfds); listen(funix, 5); if (sflag == 0) { - finet = socksetup(family, socket_debug); + finet = socksetup(family, portstr, socket_debug); } else finet = NULL; /* pretend we couldn't open TCP socket. */ if (finet) { @@ -855,7 +845,7 @@ fhosterr(int ch_opts, char *sysmsg, char *usermsg) /* if af is PF_UNSPEC more than one socket may be returned */ /* the returned list is dynamically allocated, so caller needs to free it */ static int * -socksetup(int af, int debuglvl) +socksetup(int af, const char *portstr, int debuglvl) { struct addrinfo hints, *res, *r; int error, maxs, *s, *socks; @@ -865,7 +855,7 @@ socksetup(int af, int debuglvl) hints.ai_flags = AI_PASSIVE; hints.ai_family = af; hints.ai_socktype = SOCK_STREAM; - error = getaddrinfo(NULL, "printer", &hints, &res); + error = getaddrinfo(NULL, portstr, &hints, &res); if (error) { syslog(LOG_ERR, "%s", gai_strerror(error)); mcleanup(0); @@ -934,9 +924,9 @@ static void usage(void) { #ifdef INET6 - fprintf(stderr, "usage: lpd [-cdlsFW46] [port#]\n"); + fprintf(stderr, "usage: lpd [-cdlsFW46] [port]\n"); #else - fprintf(stderr, "usage: lpd [-cdlsFW] [port#]\n"); + fprintf(stderr, "usage: lpd [-cdlsFW] [port]\n"); #endif exit(EX_USAGE); }