nupas: delete okcidr(); always trust spf records
This commit is contained in:
parent
8046225c9d
commit
8b6804717b
|
@ -147,25 +147,6 @@ spfadd(int type, char *s)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *badcidr[] = {
|
|
||||||
"0.0.0.0/8",
|
|
||||||
"1.0.0.0/8",
|
|
||||||
"2.0.0.0/8",
|
|
||||||
"5.0.0.0/8",
|
|
||||||
"10.0.0.0/8",
|
|
||||||
"127.0.0.0/8",
|
|
||||||
"255.0.0.0/8",
|
|
||||||
"192.168.0.0/16",
|
|
||||||
"169.254.0.0/16",
|
|
||||||
"172.16.0.0/20",
|
|
||||||
"224.0.0.0/24", /*rfc 3330 says this is /4. not sure */
|
|
||||||
"fc00::/7",
|
|
||||||
};
|
|
||||||
|
|
||||||
char *okcidr[] = {
|
|
||||||
"17.0.0.0/8", /* apple. seems dubious. */
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
int
|
||||||
parsecidr(uchar *addr, uchar *mask, char *from)
|
parsecidr(uchar *addr, uchar *mask, char *from)
|
||||||
{
|
{
|
||||||
|
@ -224,65 +205,6 @@ cidrmatch(char *x, char *y)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
cidrmatchtab(char *addr, char **tab, int ntab)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for(i = 0; i < ntab; i++)
|
|
||||||
if(cidrmatch(addr, tab[i]))
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
okcidrlen(char *cidr, int i)
|
|
||||||
{
|
|
||||||
if(i >= 14 && i <= 128)
|
|
||||||
return 1;
|
|
||||||
if(cidrmatchtab(cidr, okcidr, nelem(okcidr)))
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
cidrokay0(char *cidr)
|
|
||||||
{
|
|
||||||
char *p, buf[40];
|
|
||||||
uchar addr[IPaddrlen];
|
|
||||||
int l, i;
|
|
||||||
|
|
||||||
p = strchr(cidr, '/');
|
|
||||||
if(p)
|
|
||||||
l = p-cidr;
|
|
||||||
else
|
|
||||||
l = strlen(cidr);
|
|
||||||
if(l > 39)
|
|
||||||
return 0;
|
|
||||||
if(p){
|
|
||||||
i = atoi(p+1);
|
|
||||||
if(!okcidrlen(cidr, i))
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
memcpy(buf, cidr, l);
|
|
||||||
buf[l] = 0;
|
|
||||||
if(parseip(addr, buf) == -1)
|
|
||||||
return 0;
|
|
||||||
if(cidrmatchtab(cidr, badcidr, nelem(badcidr)))
|
|
||||||
return 0;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
cidrokay(char *cidr)
|
|
||||||
{
|
|
||||||
if(!cidrokay0(cidr)){
|
|
||||||
fprint(2, "spf: naughty cidr %s\n", cidr);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
ptrmatch(Squery *q, char *s)
|
ptrmatch(Squery *q, char *s)
|
||||||
{
|
{
|
||||||
|
@ -300,7 +222,7 @@ spfaddcidr(Squery *q, int type, char *s)
|
||||||
snprint(buf, sizeof buf, "%s/%s", s, q->cidrtail);
|
snprint(buf, sizeof buf, "%s/%s", s, q->cidrtail);
|
||||||
s = buf;
|
s = buf;
|
||||||
}
|
}
|
||||||
if(cidrokay(s) && ptrmatch(q, s))
|
if(ptrmatch(q, s))
|
||||||
return spfadd(type, s);
|
return spfadd(type, s);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue