summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorftrvxmtrx <ftrvxmtrx@gmail.com>2016-02-12 23:52:50 +0200
committerftrvxmtrx <ftrvxmtrx@gmail.com>2016-02-12 23:52:50 +0200
commit668318b2e69edd4aa71a21ff31731fa81dbe7095 (patch)
tree7519a6f10a9b7763f56d08114e2f0b99f73c158e
parenteeb96dca21dfc28afa69f3d00fa6f2cdb7e9b1b8 (diff)
downloadplan9front-668318b2e69edd4aa71a21ff31731fa81dbe7095.tar.xz
ip/chandial: fail with Ebadarg instead of printing memory contents
-rw-r--r--sys/src/9/ip/chandial.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/src/9/ip/chandial.c b/sys/src/9/ip/chandial.c
index 38139ceec..58fc007bc 100644
--- a/sys/src/9/ip/chandial.c
+++ b/sys/src/9/ip/chandial.c
@@ -40,7 +40,7 @@ chandial(char *dest, char *local, char *dir, Chan **ctlp)
ds.ctlp = ctlp;
_dial_string_parse(dest, &ds);
- if(ds.netdir == 0)
+ if(ds.netdir == nil)
ds.netdir = "/net";
/* no connection server, don't translate */
@@ -109,11 +109,13 @@ _dial_string_parse(char *str, DS *ds)
ds->rem = ds->buf;
} else {
if(*ds->buf != '/' && *ds->buf != '#'){
- ds->netdir = 0;
+ ds->netdir = nil;
ds->proto = ds->buf;
} else {
- for(p2 = p; *p2 != '/'; p2--)
+ for(p2 = p; *p2 != '/' && p2 != ds->buf; p2--)
;
+ if(p2 == ds->buf)
+ error(Ebadarg);
*p2++ = 0;
ds->netdir = ds->buf;
ds->proto = p2;