diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-02-25 17:11:18 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-02-25 17:11:18 +0100 |
commit | b2d79920255fc405b972e4c900e47f4a1046e044 (patch) | |
tree | b0ee1c462368b365880b6adb2fb8ea6b64b5336f /sys/src/9/port/devsdp.c | |
parent | d3f4786a1fcfb3cf8eba0cad2457622c6487e0e9 (diff) |
kernel: properly handle bad attach specifiers
- only accept decimal for numeric device id's
- exclude negative device id's
- device id's out of range yield Enodev
Diffstat (limited to 'sys/src/9/port/devsdp.c')
-rw-r--r-- | sys/src/9/port/devsdp.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/src/9/port/devsdp.c b/sys/src/9/port/devsdp.c index a840bc635..5d52fdb9d 100644 --- a/sys/src/9/port/devsdp.c +++ b/sys/src/9/port/devsdp.c @@ -364,14 +364,14 @@ static Chan* sdpattach(char* spec) { Chan *c; - int dev; char buf[100]; Sdp *sdp; int start; + ulong dev; - dev = atoi(spec); - if(dev<0 || dev >= Nfs) - error("bad specification"); + dev = strtoul(spec, nil, 10); + if(dev >= Nfs) + error(Enodev); c = devattach('E', spec); c->qid = (Qid){QID(0, Qtopdir), 0, QTDIR}; @@ -384,7 +384,7 @@ sdpattach(char* spec) qunlock(sdp); if(start) { - snprint(buf, sizeof(buf), "sdpackproc%d", dev); + snprint(buf, sizeof(buf), "sdpackproc%lud", dev); kproc(buf, sdpackproc, sdp); } |