Quellcode durchsuchen

* Fixed a ttl memory clobbering bug

svn: 1423
Bryan Drewery vor 21 Jahren
Ursprung
Commit
0c9b55a532
1 geänderte Dateien mit 5 neuen und 2 gelöschten Zeilen
  1. 5 2
      src/adns.c

+ 5 - 2
src/adns.c

@@ -693,6 +693,7 @@ static void parse_reply(char *response, int nbytes)
 	char result[512];
 	unsigned char *ptr;
 	int i;
+	time_t ttl = 0;
 
 	ptr = (unsigned char *) response;
 	memcpy(&header, ptr, 12);
@@ -728,6 +729,8 @@ static void parse_reply(char *response, int nbytes)
 		reply.type = ntohs(reply.type);
 		reply.rdlength = ntohs(reply.rdlength);
 		reply.ttl = ntohl(reply.ttl);
+		/* Save the lowest ttl */
+		if (reply.ttl && (reply.ttl < ttl)) ttl = reply.ttl;
 		ptr += 10;
 		if (reply.type == 1) {
 			/*fprintf(fp, "ipv4 reply\n");*/
@@ -777,8 +780,8 @@ static void parse_reply(char *response, int nbytes)
 	/* Ok, we have, so now issue the callback with the answers. */
 	if (prev) prev->next = q->next;
 	else query_head = q->next;
-
-	cache_add(q->query, &q->answer, reply.ttl);
+	cache_add(q->query, &q->answer, ttl);
+sdprintf("ncache is now: %d", ncache);
 
 	q->callback(q->client_data, q->query, q->answer.list);
 	answer_free(&q->answer);