diff options
author | djm@openbsd.org <djm@openbsd.org> | 2016-02-08 23:40:12 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2016-02-09 16:31:33 +1100 |
commit | 5a622844ff7f78dcb75e223399f9ef0977e8d0a3 (patch) | |
tree | ecdd97538c6b1cbd01bd84f4078c2866be911f43 | |
parent | 19bcf2ea2d17413f2d9730dd2a19575ff86b9b6a (diff) |
upstream commit
don't attempt to percent_expand() already-canonicalised
addresses, avoiding unnecessary failures when attempting to connect to scoped
IPv6 addresses (that naturally contain '%' characters)
Upstream-ID: f24569cffa1a7cbde5f08dc739a72f4d78aa5c6a
-rw-r--r-- | readconf.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/readconf.c b/readconf.c index 2a5620479..69d4553af 100644 --- a/readconf.c +++ b/readconf.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: readconf.c,v 1.249 2016/01/29 02:54:45 dtucker Exp $ */ | 1 | /* $OpenBSD: readconf.c,v 1.250 2016/02/08 23:40:12 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -522,12 +522,15 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw, | |||
522 | */ | 522 | */ |
523 | port = options->port <= 0 ? default_ssh_port() : options->port; | 523 | port = options->port <= 0 ? default_ssh_port() : options->port; |
524 | ruser = options->user == NULL ? pw->pw_name : options->user; | 524 | ruser = options->user == NULL ? pw->pw_name : options->user; |
525 | if (options->hostname != NULL) { | 525 | if (post_canon) { |
526 | host = xstrdup(options->hostname); | ||
527 | } else if (options->hostname != NULL) { | ||
526 | /* NB. Please keep in sync with ssh.c:main() */ | 528 | /* NB. Please keep in sync with ssh.c:main() */ |
527 | host = percent_expand(options->hostname, | 529 | host = percent_expand(options->hostname, |
528 | "h", host_arg, (char *)NULL); | 530 | "h", host_arg, (char *)NULL); |
529 | } else | 531 | } else { |
530 | host = xstrdup(host_arg); | 532 | host = xstrdup(host_arg); |
533 | } | ||
531 | 534 | ||
532 | debug2("checking match for '%s' host %s originally %s", | 535 | debug2("checking match for '%s' host %s originally %s", |
533 | cp, host, original_host); | 536 | cp, host, original_host); |