X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fdns.c;h=44654353cb603b906662a13053123b23a3cedde2;hb=5c03403d88afcde2bb3f543296b0fca6f05c9f2c;hp=ece6524d60d877a017e1de8978ca7403fa54a225;hpb=3462da30c9c57e63705fa24121655a32b315dfcf;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/dns.c b/src/src/dns.c index ece6524d6..44654353c 100644 --- a/src/src/dns.c +++ b/src/src/dns.c @@ -616,8 +616,10 @@ Arguments: Returns: the return code */ -/*XXX the derivation of this value needs explaining */ +/* we need: 255 +1 + (max(typetext) == 5) +1 + max(chars_for_long-max) +1 */ #define DNS_FAILTAG_MAX 290 +#define DNS_FAILNODE_SIZE \ + (sizeof(expiring_data) + sizeof(tree_node) + DNS_FAILTAG_MAX) static int dns_fail_return(const uschar * name, int type, time_t expiry, int rc) @@ -631,11 +633,9 @@ if ((previous = tree_search(tree_dns_fails, node_name))) e = previous->data.ptr; else { - new = store_get_perm( - sizeof(tree_node) + DNS_FAILTAG_MAX + sizeof(expiring_data), is_tainted(name)); - + e = store_get_perm(DNS_FAILNODE_SIZE, is_tainted(name)); + new = (void *)(e+1); dns_fail_tag(new->name, name, type); - e = (expiring_data *)((char *)new + sizeof(tree_node) + DNS_FAILTAG_MAX); new->data.ptr = e; (void)tree_insertnode(&tree_dns_fails, new); }