]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream commit
authormillert@openbsd.org <millert@openbsd.org>
Fri, 5 Jun 2015 15:13:13 +0000 (15:13 +0000)
committerDamien Miller <djm@mindrot.org>
Sun, 7 Jun 2015 03:09:58 +0000 (13:09 +1000)
For "ssh -L 12345:/tmp/sock" don't fail with "No forward host
 name." (we have a path, not a host name).  Based on a diff from Jared
 Yanovich. OK djm@

Upstream-ID: 2846b0a8c7de037e33657f95afbd282837fc213f

channels.c

index b0b1c58dd1215608d43ada79eda65845e4080dc1..45e1f9fcc7249c655ea84490d10417ecabec87ff 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.343 2015/05/08 03:25:07 dtucker Exp $ */
+/* $OpenBSD: channels.c,v 1.344 2015/06/05 15:13:13 millert Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -2805,17 +2805,21 @@ channel_setup_fwd_listener_tcpip(int type, struct Forward *fwd,
        char ntop[NI_MAXHOST], strport[NI_MAXSERV];
        in_port_t *lport_p;
 
-       host = (type == SSH_CHANNEL_RPORT_LISTENER) ?
-           fwd->listen_host : fwd->connect_host;
        is_client = (type == SSH_CHANNEL_PORT_LISTENER);
 
-       if (host == NULL) {
-               error("No forward host name.");
-               return 0;
-       }
-       if (strlen(host) >= NI_MAXHOST) {
-               error("Forward host name too long.");
-               return 0;
+       if (is_client && fwd->connect_path != NULL) {
+               host = fwd->connect_path;
+       } else {
+               host = (type == SSH_CHANNEL_RPORT_LISTENER) ?
+                   fwd->listen_host : fwd->connect_host;
+               if (host == NULL) {
+                       error("No forward host name.");
+                       return 0;
+               }
+               if (strlen(host) >= NI_MAXHOST) {
+                       error("Forward host name too long.");
+                       return 0;
+               }
        }
 
        /* Determine the bind address, cf. channel_fwd_bind_addr() comment */