summaryrefslogtreecommitdiff
path: root/sys/src/9/port/devsdp.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-02-25 17:11:18 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2018-02-25 17:11:18 +0100
commitb2d79920255fc405b972e4c900e47f4a1046e044 (patch)
treeb0ee1c462368b365880b6adb2fb8ea6b64b5336f /sys/src/9/port/devsdp.c
parentd3f4786a1fcfb3cf8eba0cad2457622c6487e0e9 (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.c10
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);
}