summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-08-16 20:34:46 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-08-16 20:34:46 +0200
commitd263134394105c35eefe3b115b4acf5941d8e899 (patch)
treeedb166d39bfc6d2931b6a02420898f94737c3cda /sys/src
parent43636dbb7f5dc5d116ae2773f68e3c828f72d4c2 (diff)
vncv: handle [] enclosed literal ipv6 addresses in host
Diffstat (limited to 'sys/src')
-rw-r--r--sys/src/cmd/vnc/auth.c9
-rw-r--r--sys/src/cmd/vnc/vncv.c8
2 files changed, 6 insertions, 11 deletions
diff --git a/sys/src/cmd/vnc/auth.c b/sys/src/cmd/vnc/auth.c
index bb2170c01..51682d390 100644
--- a/sys/src/cmd/vnc/auth.c
+++ b/sys/src/cmd/vnc/auth.c
@@ -53,7 +53,6 @@ vncauth(Vnc *v, char *keypattern)
char *reason;
uchar chal[VncChalLen];
ulong auth;
- char *p, *server;
if(keypattern == nil)
keypattern = "";
@@ -79,16 +78,10 @@ vncauth(Vnc *v, char *keypattern)
case AVncAuth:
vncrdbytes(v, chal, VncChalLen);
- server = strdup(serveraddr);
- p = strrchr(server, ':');
- if(p)
- *p = 0;
if(auth_respond(chal, VncChalLen, nil, 0, chal, VncChalLen, auth_getkey,
- "proto=vnc role=client server=%s %s", server, keypattern) != VncChalLen){
- free(server);
+ "proto=vnc role=client server=%s %s", serveraddr, keypattern) != VncChalLen){
return -1;
}
- free(server);
vncwrbytes(v, chal, VncChalLen);
vncflush(v);
diff --git a/sys/src/cmd/vnc/vncv.c b/sys/src/cmd/vnc/vncv.c
index 95f7b6a25..e65ff2583 100644
--- a/sys/src/cmd/vnc/vncv.c
+++ b/sys/src/cmd/vnc/vncv.c
@@ -51,7 +51,9 @@ netmkvncaddr(char *server)
port = 5900;
if(tls)
port = 35729;
- if(p = strchr(server, ':')) {
+ if((p = strchr(server, ']')) == nil)
+ p = server;
+ if((p = strchr(p, ':')) != nil) {
*p++ = '\0';
port += atoi(p);
}
@@ -110,7 +112,7 @@ main(int argc, char **argv)
usage();
serveraddr = strdup(argv[0]);
- dfd = dial(netmkvncaddr(argv[0]), nil, nil, &cfd);
+ dfd = dial(netmkvncaddr(serveraddr), nil, nil, &cfd);
if(dfd < 0)
sysfatal("cannot dial %s: %r", serveraddr);
if(tls){
@@ -132,7 +134,7 @@ main(int argc, char **argv)
if(vncstart(vnc, shared) < 0)
sysfatal("init failure: %r");
- label = smprint("vnc %s", serveraddr);
+ label = smprint("vnc %s", argv[0]);
if(initdraw(0, 0, label) < 0)
sysfatal("initdraw: %r");
free(label);