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
This commit is contained in:
parent
e0d6501e86
commit
2581333d56
12
misc.c
12
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
|
||||
|
|
21
readconf.c
21
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@cs.hut.fi>
|
||||
* Copyright (c) 1995 Tatu Ylonen <ylo@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')
|
||||
|
|
Loading…
Reference in New Issue