File openssh-7.2p2-IPv6_X_forwarding.patch of Package openssh.29886

From 86f878a79f41f153ec2994bc2e69758bc749323f Mon Sep 17 00:00:00 2001
From: Old openssh patches <pcerny@suse.com>
Date: Wed, 26 Oct 2022 09:54:04 +0200
Subject: [PATCH] openssh-7.2p2-IPv6_X_forwarding

# HG changeset patch
# Parent  0b261a26ee99ca7a61b487df291a8ce859d36d7a
Correctly parse DISPLAY variable for cases where it contains an IPv6 address
(which should - but not always is - in (square) brackets).

bnc#847710 - https://bugzilla.novell.com/show_bug.cgi?id=847710
---
 channels.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/channels.c b/channels.c
index 500c7dcd..175439da 100644
--- a/channels.c
+++ b/channels.c
@@ -4061,8 +4061,9 @@ x11_connect_display(void)
 	 * Check if it is a unix domain socket.  Unix domain displays are in
 	 * one of the following formats: unix:d[.s], :d[.s], ::d[.s]
 	 */
+	cp = strrchr(display, ':');
 	if (strncmp(display, "unix:", 5) == 0 ||
-	    display[0] == ':') {
+	    (display[0] == ':' && ((cp - display) < 2)) ) {
 		/* Connect to the unix domain socket. */
 		if (sscanf(strrchr(display, ':') + 1, "%u", &display_number) != 1) {
 			error("Could not parse display number from DISPLAY: %.100s",
@@ -4080,9 +4081,10 @@ x11_connect_display(void)
 	/*
 	 * Connect to an inet socket.  The DISPLAY value is supposedly
 	 * hostname:d[.s], where hostname may also be numeric IP address.
+	 * Note that IPv6 numberic addresses contain colons (e.g. ::1:0)
 	 */
 	strlcpy(buf, display, sizeof(buf));
-	cp = strchr(buf, ':');
+	cp = strrchr(buf, ':');
 	if (!cp) {
 		error("Could not find ':' in DISPLAY: %.100s", display);
 		return -1;
@@ -4094,6 +4096,14 @@ x11_connect_display(void)
 		    display);
 		return -1;
 	}
+	
+	/* Remove brackets surrounding IPv6 addresses if there are any. */
+	if (buf[0] == '[' && (cp = strchr(buf, ']'))) {
+		*cp = 0;
+		cp = buf + 1;
+	} else {
+		cp = buf;
+	}
 
 	/* Look up the host address */
 	memset(&hints, 0, sizeof(hints));
-- 
2.38.0

openSUSE Build Service is sponsored by