forked from pool/openssh
7bccbbd821
- Update to 7.8p1: * no actual changes for the askpass - Format with spec-cleaner - Respect cflags - Use gtk3 rather than gtk2 which is being phased out - Remove the mention of the SLE12 in the README.SUSE - Install firewall rules only when really needed (<SLE15) - Version update to 7.8p1: * For most details see release notes file * ssh-keygen(1): write OpenSSH format private keys by default instead of using OpenSSL's PEM format - Rebase patches to apply on 7.8p1 release: * openssh-7.7p1-fips.patch * openssh-7.7p1-cavstest-kdf.patch * openssh-7.7p1-fips_checks.patch * openssh-7.7p1-gssapi_key_exchange.patch * openssh-7.7p1-audit.patch * openssh-7.7p1-openssl_1.1.0.patch * openssh-7.7p1-ldap.patch * openssh-7.7p1-IPv6_X_forwarding.patch * openssh-7.7p1-sftp_print_diagnostic_messages.patch * openssh-7.7p1-disable_short_DH_parameters.patch * openssh-7.7p1-hostname_changes_when_forwarding_X.patch * openssh-7.7p1-pam_check_locks.patch * openssh-7.7p1-seed-prng.patch * openssh-7.7p1-systemd-notify.patch * openssh-7.7p1-X11_trusted_forwarding.patch - Dropped patches: OBS-URL: https://build.opensuse.org/request/show/642573 OBS-URL: https://build.opensuse.org/package/show/network/openssh?expand=0&rev=153
55 lines
1.7 KiB
Diff
55 lines
1.7 KiB
Diff
# HG changeset patch
|
|
# Parent 8df645ca39d64de025d8838c5713812e72308c92
|
|
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
|
|
|
|
diff --git a/openssh-7.7p1/channels.c b/openssh-7.7p1/channels.c
|
|
--- openssh-7.7p1/channels.c
|
|
+++ openssh-7.7p1/channels.c
|
|
@@ -4590,33 +4590,42 @@ x11_connect_display(struct ssh *ssh)
|
|
return -1;
|
|
|
|
/* OK, we now have a connection to the display. */
|
|
return sock;
|
|
}
|
|
/*
|
|
* Connect to an inet socket. The DISPLAY value is supposedly
|
|
* hostname:d[.s], where hostname may also be numeric IP address.
|
|
+ * Note that IPv6 numeric 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;
|
|
}
|
|
*cp = 0;
|
|
/*
|
|
* buf now contains the host name. But first we parse the
|
|
* display number.
|
|
*/
|
|
if (sscanf(cp + 1, "%u", &display_number) != 1) {
|
|
error("Could not parse display number from DISPLAY: %.100s",
|
|
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));
|
|
hints.ai_family = ssh->chanctxt->IPv4or6;
|
|
hints.ai_socktype = SOCK_STREAM;
|
|
snprintf(strport, sizeof strport, "%u", 6000 + display_number);
|
|
if ((gaierr = getaddrinfo(buf, strport, &hints, &aitop)) != 0) {
|
|
error("%.100s: unknown host. (%s)", buf,
|