From ee2fd4067559dd8927df0c98370c3d22c7c06ae0 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 4 Oct 2018 12:13:06 +0200 Subject: doh: make sure TTL isn't re-inited by second (discarded?) response --- lib/doh.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/doh.c b/lib/doh.c index 03e28beae..178e474aa 100644 --- 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, -- cgit v1.2.1