The function dkimf_checkhost tries to check a hostname against a list of 
DNS names for either an exact or lefthand (most significant component) 
match. It uses the following code:

       /* walk the list */
       for (node = list; node != NULL; node = node->peer_next)
       {
               if (strcasecmp(host, node->peer_info) == 0)
               {
                       out = !node->peer_neg;
                       continue;
               }

               for (p = strchr(host, '.');
                    p != NULL;
                    p = strchr(p + 1, '.'))
               {
BUG--->                 if (strcasecmp(p, node->peer_info) == 0)
                       {
                               out = !node->peer_neg;
                               break;
                       }
               }
       }

The for loop above leave p pointing at each successive '.' in the domain 
name as it tries to slide along looking for a match against the current 
node.  The nodes are domain names WITHOUT a leading '.'.  I think the 
comparison above should read "if (strcasecmp(p+1, node->peer_info) == 0)".

Regards,
   -Doug-


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
dkim-milter-discuss mailing list
dkim-milter-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dkim-milter-discuss

Reply via email to