devip: fix crash on negative dev id on attach
This commit is contained in:
parent
05cd5cb200
commit
5560efb3db
|
@ -256,32 +256,6 @@ ipreset(void)
|
||||||
fmtinstall('M', eipfmt);
|
fmtinstall('M', eipfmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Fs*
|
|
||||||
ipgetfs(int dev)
|
|
||||||
{
|
|
||||||
extern void (*ipprotoinit[])(Fs*);
|
|
||||||
Fs *f;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if(dev >= Nfs)
|
|
||||||
return nil;
|
|
||||||
|
|
||||||
qlock(&fslock);
|
|
||||||
if(ipfs[dev] == nil){
|
|
||||||
f = smalloc(sizeof(Fs));
|
|
||||||
ip_init(f);
|
|
||||||
arpinit(f);
|
|
||||||
netloginit(f);
|
|
||||||
for(i = 0; ipprotoinit[i]; i++)
|
|
||||||
ipprotoinit[i](f);
|
|
||||||
f->dev = dev;
|
|
||||||
ipfs[dev] = f;
|
|
||||||
}
|
|
||||||
qunlock(&fslock);
|
|
||||||
|
|
||||||
return ipfs[dev];
|
|
||||||
}
|
|
||||||
|
|
||||||
IPaux*
|
IPaux*
|
||||||
newipaux(char *owner, char *tag)
|
newipaux(char *owner, char *tag)
|
||||||
{
|
{
|
||||||
|
@ -303,14 +277,30 @@ newipaux(char *owner, char *tag)
|
||||||
static Chan*
|
static Chan*
|
||||||
ipattach(char* spec)
|
ipattach(char* spec)
|
||||||
{
|
{
|
||||||
|
ulong dev;
|
||||||
Chan *c;
|
Chan *c;
|
||||||
int dev;
|
|
||||||
|
|
||||||
dev = atoi(spec);
|
dev = strtoul(spec, nil, 0);
|
||||||
if(dev >= Nfs)
|
if(dev >= Nfs)
|
||||||
error("bad specification");
|
error(Ebadspec);
|
||||||
|
|
||||||
|
qlock(&fslock);
|
||||||
|
if(ipfs[dev] == nil){
|
||||||
|
extern void (*ipprotoinit[])(Fs*);
|
||||||
|
Fs *f;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
f = smalloc(sizeof(Fs));
|
||||||
|
ip_init(f);
|
||||||
|
arpinit(f);
|
||||||
|
netloginit(f);
|
||||||
|
for(i = 0; ipprotoinit[i]; i++)
|
||||||
|
ipprotoinit[i](f);
|
||||||
|
f->dev = dev;
|
||||||
|
ipfs[dev] = f;
|
||||||
|
}
|
||||||
|
qunlock(&fslock);
|
||||||
|
|
||||||
ipgetfs(dev);
|
|
||||||
c = devattach('I', spec);
|
c = devattach('I', spec);
|
||||||
mkqid(&c->qid, QID(0, 0, Qtopdir), 0, QTDIR);
|
mkqid(&c->qid, QID(0, 0, Qtopdir), 0, QTDIR);
|
||||||
c->dev = dev;
|
c->dev = dev;
|
||||||
|
|
Loading…
Reference in a new issue