Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Project not found: home:uncomfyhalomacro:branches:devel:tools:compiler
SUSE:SLE-12-SP4:Update
openssh-testuser.26950
openssh-7.2p2-IPv6_X_forwarding.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File openssh-7.2p2-IPv6_X_forwarding.patch of Package openssh-testuser.26950
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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor