mirror of
https://github.com/hickory-dns/hickory-dns.git
synced 2026-04-25 11:15:54 +03:00
[PR #2872] [MERGED] Fuzzer for preservation of RDATA #3388
Labels
No labels
blocked
breaking-change
bug
bug:critical
bug:tests
cleanup
compliance
compliance
compliance
crate:all
crate:client
crate:native-tls
crate:proto
crate:recursor
crate:resolver
crate:resolver
crate:rustls
crate:server
crate:util
dependencies
docs
duplicate
easy
easy
enhance
enhance
enhance
feature:dns-over-https
feature:dns-over-quic
feature:dns-over-tls
feature:dnsssec
feature:global_lb
feature:mdns
feature:tsig
features:edns
has workaround
ops
perf
platform:WASM
platform:android
platform:fuchsia
platform:linux
platform:macos
platform:windows
pull-request
question
test
tools
tools
trust
unclear
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hickory-dns#3388
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/hickory-dns/hickory-dns/pull/2872
Author: @divergentdave
Created: 3/18/2025
Status: ✅ Merged
Merged: 3/22/2025
Merged by: @divergentdave
Base:
main← Head:david/preserve-rdata📝 Commits (3)
ba9c923Add fuzzer to check if RDATA is properly preservedc116efadns-test: Add support for CAAf127010Add test for CAA with "issue" tag and empty value📊 Changes
4 files changed (+459 additions, -13 deletions)
View changed files
📝
conformance/packages/conformance-tests/src/resolver/dns/rfc3597.rs(+61 -1)📝
conformance/packages/dns-test/src/record.rs(+107 -1)📝
fuzz/Cargo.toml(+6 -11)➕
fuzz/fuzz_targets/preserve_rdata.rs(+285 -0)📄 Description
This adds a new fuzzer, and one test for a bug discovered by it, focused on the following requirement from RFC 3597.
The fuzzer parses its input as a
Message, then re-encodes the message again. It does its own parsing of both byte strings to split them up into resource records. For well-known record types that are allowed to use compression in the RDATA, names are decompressed, and equivalent records are reassembled. In either case, the original and re-encoded record byte arrays are compared to check for equality. As noted above, if the data changes while round-tripping through Hickory DNS's internal representation, this can invalidate DNSSEC signatures over the data.The new conformance test illustrates this impact, on
CAA 0 issue ""being transformed intoCAA 0 issue ";". I implemented basic CAA record support indns-testto enable this.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.