X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-dns-packet.c;h=0d276df8c951bade95c0131c3f899db7512cc904;hb=2928b0a863091f8f291fddb168988711afd389ef;hp=b97fd17963201e75614c1895dd7730625574be01;hpb=151226ab4bf276d60d51864330a99f886b923697;p=elogind.git diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index b97fd1796..0d276df8c 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -1029,6 +1029,8 @@ static bool loc_size_ok(uint8_t size) { } static int dnskey_parse_flags(DnsResourceRecord *rr, uint16_t flags) { + assert(rr); + if (flags & ~(DNSKEY_FLAG_SEP | DNSKEY_FLAG_ZONE_KEY)) return -EBADMSG; @@ -1356,6 +1358,9 @@ int dns_packet_extract(DnsPacket *p) { unsigned n, i; int r; + if (p->extracted) + return 0; + saved_rindex = p->rindex; dns_packet_rewind(p, DNS_PACKET_HEADER_SIZE); @@ -1407,6 +1412,8 @@ int dns_packet_extract(DnsPacket *p) { p->answer = answer; answer = NULL; + p->extracted = true; + r = 0; finish: