View | Details | Raw Unified | Return to bug 2222
Collapse All | Expand All

(-)channels.c (-2 / +14 lines)
Lines 2700-2705 channel_set_af(int af) Link Here
2700
 * "0.0.0.0"               -> wildcard v4/v6 if SSH_OLD_FORWARD_ADDR
2700
 * "0.0.0.0"               -> wildcard v4/v6 if SSH_OLD_FORWARD_ADDR
2701
 * "" (empty string), "*"  -> wildcard v4/v6
2701
 * "" (empty string), "*"  -> wildcard v4/v6
2702
 * "localhost"             -> loopback v4/v6
2702
 * "localhost"             -> loopback v4/v6
2703
 * "127.0.0.1" / "::1"     -> accepted even if gateway_ports isn't set
2703
 */
2704
 */
2704
static const char *
2705
static const char *
2705
channel_fwd_bind_addr(const char *listen_addr, int *wildcardp,
2706
channel_fwd_bind_addr(const char *listen_addr, int *wildcardp,
Lines 2729-2737 channel_fwd_bind_addr(const char *listen Link Here
2729
				    "\"%s\" overridden by server "
2730
				    "\"%s\" overridden by server "
2730
				    "GatewayPorts", listen_addr);
2731
				    "GatewayPorts", listen_addr);
2731
			}
2732
			}
2732
		}
2733
		} else if (strcmp(listen_addr, "localhost") != 0 ||
2733
		else if (strcmp(listen_addr, "localhost") != 0)
2734
		    strcmp(listen_addr, "127.0.0.1") == 0 ||
2735
		    strcmp(listen_addr, "::1") == 0) {
2736
			/* Accept localhost address when GatewayPorts=yes */
2734
			addr = listen_addr;
2737
			addr = listen_addr;
2738
		}
2739
	} else if (strcmp(listen_addr, "127.0.0.1") == 0 ||
2740
	    strcmp(listen_addr, "::1") == 0) {
2741
		/*
2742
		 * If a specific IPv4/IPv6 localhost address has been
2743
		 * requested then accept it even if gateway_ports is in
2744
		 * effect. This allows the client to prefer IPv4 or IPv6.
2745
		 */
2746
		addr = listen_addr;
2735
	}
2747
	}
2736
	if (wildcardp != NULL)
2748
	if (wildcardp != NULL)
2737
		*wildcardp = wildcard;
2749
		*wildcardp = wildcard;

Return to bug 2222