diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-05-05 02:11:00 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-05-05 02:11:00 +0200 |
commit | 5a2ad90bec85dbfd5c5f6bb1b0ff88a73cfe1911 (patch) | |
tree | fc660cbfa70c721f67f9f1f12fe4dae9ebc918fb /sys/src | |
parent | c7db24fc26ae57be607887b20dc180a64a73fa3e (diff) |
vncv: fix netmkvncaddr()
netmkaddr() can return a the pointer to the host string if
it is already a full dial string. but we assumed to get
a copy and freed it before returning.
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/cmd/vnc/vncv.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/sys/src/cmd/vnc/vncv.c b/sys/src/cmd/vnc/vncv.c index e43c57803..fcd262836 100644 --- a/sys/src/cmd/vnc/vncv.c +++ b/sys/src/cmd/vnc/vncv.c @@ -43,14 +43,11 @@ shutdown(void) } char* -netmkvncaddr(char *inserver) +netmkvncaddr(char *server) { - char *p, portstr[NETPATHLEN], *server; + char *p, portstr[NETPATHLEN]; int port; - server = strdup(inserver); - assert(server != nil); - port = 5900; if(tls) port = 35729; @@ -58,11 +55,8 @@ netmkvncaddr(char *inserver) *p++ = '\0'; port += atoi(p); } - snprint(portstr, sizeof portstr, "%d", port); - p = netmkaddr(server, "tcp", portstr); - free(server); - return p; + return netmkaddr(server, "tcp", portstr); } void @@ -82,7 +76,7 @@ void main(int argc, char **argv) { int p, dfd, cfd, shared; - char *keypattern, *addr, *label; + char *keypattern, *label; Point d; keypattern = nil; @@ -116,11 +110,10 @@ main(int argc, char **argv) if(argc != 1) usage(); - addr = netmkvncaddr(argv[0]); - serveraddr = argv[0]; - dfd = dial(addr, nil, nil, &cfd); + serveraddr = strdup(argv[0]); + dfd = dial(netmkvncaddr(argv[0]), nil, nil, &cfd); if(dfd < 0) - sysfatal("cannot dial %s: %r", addr); + sysfatal("cannot dial %s: %r", serveraddr); if(tls){ TLSconn conn; |