when connecting via socket (the default case), filter addresses by
authordjm <djm@openbsd.org>
Wed, 15 Nov 2023 23:03:38 +0000 (23:03 +0000)
committerdjm <djm@openbsd.org>
Wed, 15 Nov 2023 23:03:38 +0000 (23:03 +0000)
AddressFamily if one was specified. Fixes the case where, if
CanonicalizeHostname is enabled, ssh may ignore AddressFamily.
bz5326; ok dtucker

usr.bin/ssh/sshconnect.c

index a0ff055..a47c8f7 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect.c,v 1.363 2023/03/10 07:17:08 dtucker Exp $ */
+/* $OpenBSD: sshconnect.c,v 1.364 2023/11/15 23:03:38 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -459,6 +459,14 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop,
                                errno = oerrno;
                                continue;
                        }
+                       if (options.address_family != AF_UNSPEC &&
+                           ai->ai_family != options.address_family) {
+                               debug2_f("skipping address [%s]:%s: "
+                                   "wrong address family", ntop, strport);
+                               errno = 0;
+                               continue;
+                       }
+
                        debug("Connecting to %.200s [%.100s] port %s.",
                                host, ntop, strport);