ip/ipconfig, ndb/dns, libndb: handle parseipmask() errors
This commit is contained in:
parent
d551a83ae4
commit
45213ee6c7
|
@ -1019,12 +1019,13 @@ ndb2conf(Ndb *db, uchar *myip)
|
||||||
}
|
}
|
||||||
if(strcmp(nt->attr, "ipmask") == 0) {
|
if(strcmp(nt->attr, "ipmask") == 0) {
|
||||||
nt = uniquent(nt);
|
nt = uniquent(nt);
|
||||||
parseipmask(conf.mask, nt->val, isv4(myip));
|
if(parseipmask(conf.mask, nt->val, isv4(myip)) == -1)
|
||||||
|
goto Badip;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(parseip(ip, nt->val) == -1) {
|
if(parseip(ip, nt->val) == -1) {
|
||||||
fprint(2, "%s: bad %s address in ndb: %s\n", argv0,
|
Badip:
|
||||||
nt->attr, nt->val);
|
fprint(2, "%s: bad %s address in ndb: %s\n", argv0, nt->attr, nt->val);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(strcmp(nt->attr, "ipgw") == 0) {
|
if(strcmp(nt->attr, "ipgw") == 0) {
|
||||||
|
|
|
@ -1062,11 +1062,10 @@ createv4ptrs(void)
|
||||||
if(t == nil) /* could be a reverse with no forward */
|
if(t == nil) /* could be a reverse with no forward */
|
||||||
continue;
|
continue;
|
||||||
nt = look(t, t, "ipmask");
|
nt = look(t, t, "ipmask");
|
||||||
if(nt == nil){ /* we're confused */
|
if(nt == nil || parseipmask(mask, nt->val, 1) == -1){
|
||||||
ndbfree(t);
|
ndbfree(t);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
parseipmask(mask, nt->val, 1);
|
|
||||||
ndbfree(t);
|
ndbfree(t);
|
||||||
n = 5;
|
n = 5;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -123,7 +123,6 @@ subnet(Ndb *db, uchar *net, Ndbtuple *f, int prefix)
|
||||||
char netstr[64];
|
char netstr[64];
|
||||||
uchar mask[IPaddrlen];
|
uchar mask[IPaddrlen];
|
||||||
Ndbtuple *t, *nt, *xt;
|
Ndbtuple *t, *nt, *xt;
|
||||||
int masklen;
|
|
||||||
|
|
||||||
t = nil;
|
t = nil;
|
||||||
snprint(netstr, sizeof(netstr), "%I", net);
|
snprint(netstr, sizeof(netstr), "%I", net);
|
||||||
|
@ -132,12 +131,9 @@ subnet(Ndb *db, uchar *net, Ndbtuple *f, int prefix)
|
||||||
xt = ndbfindattr(nt, nt, "ipnet");
|
xt = ndbfindattr(nt, nt, "ipnet");
|
||||||
if(xt != nil){
|
if(xt != nil){
|
||||||
xt = ndbfindattr(nt, nt, "ipmask");
|
xt = ndbfindattr(nt, nt, "ipmask");
|
||||||
if(xt != nil)
|
if(xt == nil || parseipmask(mask, xt->val, isv4(net)) == -1)
|
||||||
parseipmask(mask, xt->val, isv4(net));
|
|
||||||
else
|
|
||||||
ipmove(mask, defmask(net));
|
ipmove(mask, defmask(net));
|
||||||
masklen = prefixlen(mask);
|
if(prefixlen(mask) <= prefix){
|
||||||
if(masklen <= prefix){
|
|
||||||
t = ndbconcatenate(t, filter(db, nt, f));
|
t = ndbconcatenate(t, filter(db, nt, f));
|
||||||
nt = nil;
|
nt = nil;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue