File 001-Update-src-virt-viewer-app.c.patch of Package virt-viewer

Subject: Update src/virt-viewer-app.c
From: dns2utf8 dns2utf8@estada.ch Sun Dec 19 14:13:29 2021 +0000
Date: Sun Dec 19 15:26:38 2021 +0100:
Git: b8e2998c554e101812f11b3218c21d275d9e035a

Signed-off-by: Stefan Schindler <dns2utf8@estada.ch>

diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index f832664..00346c4 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -830,8 +830,8 @@ virt_viewer_app_open_tunnel_ssh(const char *sshhost,
                                 const char *port,
                                 const char *unixsock)
 {
-    const char *cmd[10];
-    char portstr[50];
+    const char *cmd[10] = { NULL };
+    char portstr[50] = { 0 };
     int n = 0;
     GString *cat;
 
@@ -850,9 +850,16 @@ virt_viewer_app_open_tunnel_ssh(const char *sshhost,
     cat = g_string_new("if (command -v socat) >/dev/null 2>&1");
 
     g_string_append(cat, "; then socat - ");
-    if (port)
-        g_string_append_printf(cat, "TCP:%s:%s", host, port);
-    else
+    if (port) {
+        // Wrap raw IPv6 address in []
+        const char *connect_str;
+        if (strstr(host, ":") != NULL && host[0] != '[') {
+            connect_str = "TCP:[%s]:%s";
+        } else {
+            connect_str = "TCP:%s:%s";
+        }
+        g_string_append_printf(cat, connect_str, host, port);
+    } else
         g_string_append_printf(cat, "UNIX-CONNECT:%s", unixsock);
 
     g_string_append(cat, "; else nc ");
openSUSE Build Service is sponsored by