char *previous_dname, tmpname[DNS_MAX_NAME_SIZE];
int len, flags, offset, ret;
int dns_query_record_id, dns_answer_record_id;
+ int nb_saved_records;
struct dns_query_item *dns_query;
struct dns_answer_item *dns_answer_record;
struct dns_response_packet *dns_p;
/* now parsing response records */
LIST_INIT(&dns_p->answer_list);
+ nb_saved_records = 0;
for (dns_answer_record_id = 0; dns_answer_record_id < dns_p->header.ancount; dns_answer_record_id++) {
if (reader >= bufend)
return DNS_RESP_INVALID;
} /* switch (record type) */
+ /* increment the counter for number of records saved into our local response */
+ nb_saved_records += 1;
+
/* move forward dns_answer_record->data_len for analyzing next record in the response */
reader += dns_answer_record->data_len;
} /* for i 0 to ancount */
if (ret == 0)
return DNS_RESP_INVALID;
+ /* save the number of records we really own */
+ dns_p->header.ancount = nb_saved_records;
+
return DNS_RESP_VALID;
}