[openssh-commits] [openssh] 01/01: upstream: Support using service names for port numbers.

git+noreply at mindrot.org git+noreply at mindrot.org
Sun Oct 7 14:58:31 AEDT 2018


This is an automated email from the git hooks/post-receive script.

djm pushed a commit to branch master
in repository openssh.

commit 2581333d564d8697837729b3d07d45738eaf5a54
Author: naddy at openbsd.org <naddy at openbsd.org>
Date:   Fri Oct 5 14:26:09 2018 +0000

    upstream: Support using service names for port numbers.
    
    * Try to resolve a port specification with getservbyname(3) if a
     numeric conversion fails.
    * Make the "Port" option in ssh_config handle its argument as a
     port rather than a plain integer.
    
    ok dtucker@ deraadt@
    
    OpenBSD-Commit-ID: e7f03633133205ab3dfbc67f9df7475fabae660d
---
 misc.c     | 12 ++++++++----
 readconf.c | 21 +++++++++++++++------
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/misc.c b/misc.c
index c4ca1256..bdc06fdb 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.c,v 1.132 2018/10/03 06:38:35 djm Exp $ */
+/* $OpenBSD: misc.c,v 1.133 2018/10/05 14:26:09 naddy Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  * Copyright (c) 2005,2006 Damien Miller.  All rights reserved.
@@ -50,6 +50,7 @@
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/tcp.h>
+#include <arpa/inet.h>
 
 #include <ctype.h>
 #include <errno.h>
@@ -332,13 +333,16 @@ pwcopy(struct passwd *pw)
 int
 a2port(const char *s)
 {
+	struct servent *se;
 	long long port;
 	const char *errstr;
 
 	port = strtonum(s, 0, 65535, &errstr);
-	if (errstr != NULL)
-		return -1;
-	return (int)port;
+	if (errstr == NULL)
+		return (int)port;
+	if ((se = getservbyname(s, "tcp")) != NULL)
+		return ntohs(se->s_port);
+	return -1;
 }
 
 int
diff --git a/readconf.c b/readconf.c
index d39cfa3c..43381152 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.c,v 1.299 2018/10/03 06:38:35 djm Exp $ */
+/* $OpenBSD: readconf.c,v 1.300 2018/10/05 14:26:09 naddy Exp $ */
 /*
  * Author: Tatu Ylonen <ylo at cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -1158,7 +1158,20 @@ parse_command:
 		return 0;
 
 	case oPort:
-		intptr = &options->port;
+		arg = strdelim(&s);
+		if (!arg || *arg == '\0')
+			fatal("%.200s line %d: Missing argument.",
+			    filename, linenum);
+		value = a2port(arg);
+		if (value <= 0)
+			fatal("%.200s line %d: Bad port '%s'.",
+			    filename, linenum, arg);
+		if (*activep && options->port == -1)
+			options->port = value;
+		break;
+
+	case oConnectionAttempts:
+		intptr = &options->connection_attempts;
 parse_int:
 		arg = strdelim(&s);
 		if ((errstr = atoi_err(arg, &value)) != NULL)
@@ -1168,10 +1181,6 @@ parse_int:
 			*intptr = value;
 		break;
 
-	case oConnectionAttempts:
-		intptr = &options->connection_attempts;
-		goto parse_int;
-
 	case oCiphers:
 		arg = strdelim(&s);
 		if (!arg || *arg == '\0')

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list