Next in the *_human round-trip series. Several -v rdata renderers emitted
incomplete or invalid presentation form that could not round-trip to the same
wire format:
- NSAP rendered a placeholder instead of the rdata.
- TLSA / SMIMEA cut off the association data with
....
- RP wrapped both domain names in double quotes.
- L64 / NID dropped zero-padding on the 64-bit locator/node-id — and
truncated the value itself (below).
- ZONEMD used a fixed 129-byte buffer with a dead ">64 bytes" fallback.
All now render in full, valid presentation form via a shared dynamically-sized
hex helper, so each re-parses to identical wire format.
Also fixes two pre-existing 64-bit truncation bugs behind L64/NID:
- Parse: the group accumulator was a
uint8_t, masking the value to its
low 8 bits.
- Wire: the 8-byte field was written with
htonl (32-bit), so validns
computed wrong wire rdata for NID/L64 and couldn't verify their RRSIGs; now
encoded big-endian.
A signed fixture and a splice capstone prove wire-identity: each rendered record
is spliced back into the signed zone and the RRSIGs still verify.
Next in the `*_human` round-trip series. Several `-v` rdata renderers emitted
incomplete or invalid presentation form that could not round-trip to the same
wire format:
- **NSAP** rendered a placeholder instead of the rdata.
- **TLSA / SMIMEA** cut off the association data with `...`.
- **RP** wrapped both domain names in double quotes.
- **L64 / NID** dropped zero-padding on the 64-bit locator/node-id — and
truncated the value itself (below).
- **ZONEMD** used a fixed 129-byte buffer with a dead ">64 bytes" fallback.
All now render in full, valid presentation form via a shared dynamically-sized
hex helper, so each re-parses to identical wire format.
Also fixes two pre-existing 64-bit truncation bugs behind L64/NID:
- **Parse:** the group accumulator was a `uint8_t`, masking the value to its
low 8 bits.
- **Wire:** the 8-byte field was written with `htonl` (32-bit), so validns
computed wrong wire rdata for NID/L64 and couldn't verify their RRSIGs; now
encoded big-endian.
A signed fixture and a splice capstone prove wire-identity: each rendered record
is spliced back into the signed zone and the RRSIGs still verify.