Nice catch!

2012/8/29  <cinap_len...@gmx.de>:
> you are right!
>
> baddelegation() is checking for that, but it was not effective because it
> bailed out before even entering that for loop because of:
>
>         if(t == nil)
>                 t = lookupinfo("dom");
>         if(t == nil)
>                 return 0;       <- delegation loop will not be checked :(
>
> the following patch makes it work:
>
> dblookup.c:799,806 - /sys/src/cmd/ndb/dblookup.c:799,804
>
>         if(t == nil)
>                 t = lookupinfo("dom");
> -       if(t == nil)
> -               return 0;
>
>         for(; rp; rp = rp->next){
>                 if(rp->type != Tns)
> dblookup.c:816,821 - /sys/src/cmd/ndb/dblookup.c:814,822
>                         return 1;
>                 }
>
> +               if(t == nil)
> +                       continue;
> +
>                 /* see if delegating to us what we don't own */
>                 for(nt = t; nt != nil; nt = nt->entry)
>                         if(rp->host && cistrcmp(rp->host->name, nt->val) == 0)
> --
> cinap
>

Reply via email to