doh: make sure TTL isn't re-inited by second (discarded?) response

Closes #3092
This commit is contained in:
Daniel Stenberg 2018-10-04 12:13:06 +02:00
parent 94ad57b024
commit 8f2bb0e377
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
1 changed files with 8 additions and 3 deletions

View File

@ -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,