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