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) 2000 Markus Friedl. All rights reserved.
|
||||||
* Copyright (c) 2005,2006 Damien Miller. All rights reserved.
|
* Copyright (c) 2005,2006 Damien Miller. All rights reserved.
|
||||||
|
@ -50,6 +50,7 @@
|
||||||
#include <netinet/in_systm.h>
|
#include <netinet/in_systm.h>
|
||||||
#include <netinet/ip.h>
|
#include <netinet/ip.h>
|
||||||
#include <netinet/tcp.h>
|
#include <netinet/tcp.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
@ -332,13 +333,16 @@ pwcopy(struct passwd *pw)
|
||||||
int
|
int
|
||||||
a2port(const char *s)
|
a2port(const char *s)
|
||||||
{
|
{
|
||||||
|
struct servent *se;
|
||||||
long long port;
|
long long port;
|
||||||
const char *errstr;
|
const char *errstr;
|
||||||
|
|
||||||
port = strtonum(s, 0, 65535, &errstr);
|
port = strtonum(s, 0, 65535, &errstr);
|
||||||
if (errstr != NULL)
|
if (errstr == NULL)
|
||||||
return -1;
|
return (int)port;
|
||||||
return (int)port;
|
if ((se = getservbyname(s, "tcp")) != NULL)
|
||||||
|
return ntohs(se->s_port);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
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>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -1158,7 +1158,20 @@ parse_command:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case oPort:
|
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:
|
parse_int:
|
||||||
arg = strdelim(&s);
|
arg = strdelim(&s);
|
||||||
if ((errstr = atoi_err(arg, &value)) != NULL)
|
if ((errstr = atoi_err(arg, &value)) != NULL)
|
||||||
|
@ -1168,10 +1181,6 @@ parse_int:
|
||||||
*intptr = value;
|
*intptr = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case oConnectionAttempts:
|
|
||||||
intptr = &options->connection_attempts;
|
|
||||||
goto parse_int;
|
|
||||||
|
|
||||||
case oCiphers:
|
case oCiphers:
|
||||||
arg = strdelim(&s);
|
arg = strdelim(&s);
|
||||||
if (!arg || *arg == '\0')
|
if (!arg || *arg == '\0')
|
||||||
|
|
Loading…
Reference in New Issue