goto err;
pointer = 0;
p = sp->p;
- if (p == nil) {
+ if(p == nil) {
dnslog("gname: %R: nil sp->p", rp);
goto err;
}
toend = to + Domlen;
for(len = 0; *p && p < sp->ep; len += (pointer? 0: n+1)) {
n = 0;
- switch (*p & 0300) {
+ switch(*p & 0300) {
case 0: /* normal label */
- if (p < sp->ep)
+ if(p < sp->ep)
n = *p++ & 077; /* pick up length */
+ if(sp->ep - p <= n){
+ sp->err = "bad name length";
+ goto err;
+ }
if(len + n < Domlen - 1){
if(n > toend - to){
errtoolong(rp, sp, toend - to, n,
rp->type = type;
ULONG(rp->ttl);
- rp->ttl += now;
USHORT(len); /* length of data following */
data = sp->p;
assert(data != nil);
if (type == Tcname && sp->p - data == 2 && len == 0)
return rp;
if (len > sp->p - data){
- dnslog("bad %s RR len (%d bytes nominal, %lud actual): %R",
+ dnslog("bad %s RR len (%d bytes nominal, %zud actual): %R",
rrname(type, ptype, sizeof ptype), len,
sp->p - data, rp);
rrfree(rp);