]> granicus.if.org Git - curl/commitdiff
doh: make sure TTL isn't re-inited by second (discarded?) response
authorDaniel Stenberg <daniel@haxx.se>
Thu, 4 Oct 2018 10:13:06 +0000 (12:13 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 4 Oct 2018 21:22:28 +0000 (23:22 +0200)
Closes #3092

lib/doh.c

index 03e28beae0d870b391759055007f0ef9a7f91584..178e474aa2f6b7335a99157811d37e0d6ae7f077 100644 (file)
--- a/lib/doh.c
+++ b/lib/doh.c
@@ -498,6 +498,13 @@ static DOHcode rdata(unsigned char *doh,
   return DOH_OK;
 }
 
+static void init_dohentry(struct dohentry *de)
+{
+  memset(de, 0, sizeof(*de));
+  de->ttl = INT_MAX;
+}
+
+
 UNITTEST DOHcode doh_decode(unsigned char *doh,
                             size_t dohlen,
                             DNStype dnstype,
@@ -514,8 +521,6 @@ UNITTEST DOHcode doh_decode(unsigned char *doh,
   unsigned int index = 12;
   DOHcode rc;
 
-  d->ttl = INT_MAX;
-
   if(dohlen < 12)
     return DOH_TOO_SMALL_BUFFER; /* too small */
   if(doh[0] || doh[1])
@@ -824,7 +829,7 @@ CURLcode Curl_doh_is_resolved(struct connectdata *conn,
     Curl_close(data->req.doh.probe[1].easy);
 
     /* parse the responses, create the struct and return it! */
-    memset(&de, 0, sizeof(de));
+    init_dohentry(&de);
     rc = doh_decode(data->req.doh.probe[0].serverdoh.memory,
                     data->req.doh.probe[0].serverdoh.size,
                     data->req.doh.probe[0].dnstype,