diff options
author | djm@openbsd.org <djm@openbsd.org> | 2015-10-16 20:40:49 +0200 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2015-10-16 20:45:11 +0200 |
commit | 5ee0063f024bf5b3f3ffb275b8cd20055d62b4b9 (patch) | |
tree | 35f193239500c48f5fcd0c4c3156cf39265ba2d4 /ssh.c | |
parent | upstream commit (diff) | |
download | openssh-5ee0063f024bf5b3f3ffb275b8cd20055d62b4b9.tar.xz openssh-5ee0063f024bf5b3f3ffb275b8cd20055d62b4b9.zip |
upstream commit
better handle anchored FQDNs (e.g. 'cvs.openbsd.org.') in
hostname canonicalisation - treat them as already canonical and remove the
trailing '.' before matching ssh_config; ok markus@
Upstream-ID: f7619652e074ac3febe8363f19622aa4853b679a
Diffstat (limited to '')
-rw-r--r-- | ssh.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: ssh.c,v 1.427 2015/10/15 23:51:40 djm Exp $ */ +/* $OpenBSD: ssh.c,v 1.428 2015/10/16 18:40:49 djm Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -404,6 +404,17 @@ resolve_canonicalize(char **hostp, int port) return addrs; } + /* If domain name is anchored, then resolve it now */ + if ((*hostp)[strlen(*hostp) - 1] == '.') { + debug3("%s: name is fully qualified", __func__); + fullhost = xstrdup(*hostp); + if ((addrs = resolve_host(fullhost, port, 0, + newname, sizeof(newname))) != NULL) + goto found; + free(fullhost); + goto notfound; + } + /* Don't apply canonicalization to sufficiently-qualified hostnames */ ndots = 0; for (cp = *hostp; *cp != '\0'; cp++) { @@ -427,6 +438,7 @@ resolve_canonicalize(char **hostp, int port) free(fullhost); continue; } + found: /* Remove trailing '.' */ fullhost[strlen(fullhost) - 1] = '\0'; /* Follow CNAME if requested */ @@ -438,6 +450,7 @@ resolve_canonicalize(char **hostp, int port) *hostp = fullhost; return addrs; } + notfound: if (!options.canonicalize_fallback_local) fatal("%s: Could not resolve host \"%s\"", __progname, *hostp); debug2("%s: host %s not found in any suffix", __func__, *hostp); |