]> git.netwichtig.de Git - user/henk/code/exim.git/blobdiff - src/src/dns.c
Testsuite: avoid picking 0.0.0.0 as the HOSTIPV4; permit 10.0/8 apart from 10.250...
[user/henk/code/exim.git] / src / src / dns.c
index b309207cfd43dd6cf90781a71eb2ccaf6ba4b425..44654353cb603b906662a13053123b23a3cedde2 100644 (file)
@@ -10,7 +10,6 @@
 #include "exim.h"
 
 
-
 /*************************************************
 *               Fake DNS resolver                *
 *************************************************/
@@ -617,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)
@@ -632,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);
   }
@@ -687,7 +686,7 @@ in the SOA.  We hope that one was returned in the lookup, and do not
 bother doing a separate lookup; if not found return a forever TTL.
 */
 
-static time_t
+time_t
 dns_expire_from_soa(dns_answer * dnsa)
 {
 const HEADER * h = (const HEADER *)dnsa->answer;
@@ -733,9 +732,9 @@ for (dns_record * rr = dns_next_rr(dnsa, &dnss, RESET_AUTHORITY);
 
   /* Skip the SOA serial, refresh, retry & expire.  Grab the TTL */
 
-  if (p > dnsa->answer + dnsa->answerlen - 5 * NS_INT32SZ)
+  if (p > dnsa->answer + dnsa->answerlen - 5 * INT32SZ)
     break;
-  p += 4 * NS_INT32SZ;
+  p += 4 * INT32SZ;
   GETLONG(ttl, p);
 
   return time(NULL) + ttl;