43 lines
1.4 KiB
Diff
43 lines
1.4 KiB
Diff
|
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 ");
|