Release v1.8.0#63
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Release v1.8.0 focused on DNSSEC algorithm/digest support and correctness hardening around DNS wire encoding/decoding (name compression + TXT multi-string boundary preservation), alongside packaging updates to ship both ESM and CommonJS builds.
Changes:
- Harden DNS name decoding (
readWireName) and add RFC 1035 name compression support viawirePackDomainCompressed(). - Preserve multi-string TXT boundaries across wire/BIND/tinydns generic parsing and update DNSSEC DS/RRSIG algorithm + DS digest type options.
- Add CommonJS build output and update docs/changelog/tests for the release.
Reviewed changes
Copilot reviewed 16 out of 19 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| lib/wire.js | Adds readWireName bounds/cycle protections, name compression packer, and charstrs decoding behavior updates. |
| lib/bind.js | Updates BIND parsing to preserve multi-string TXT boundaries (array for charstrs). |
| rr/txt.js | Preserves TXT segment boundaries for tinydns generic import and wire encoding. |
| rr/rrsig.js | Expands accepted DNSSEC algorithm IDs (IANA list) and corrects algorithm label for 3. |
| rr/ds.js | Expands accepted DNSSEC algorithm IDs and adds SHA-384 digest type support. |
| test/wire.js | Adds negative tests for readWireName hardening and tests for wirePackDomainCompressed. |
| test/base.js | Normalizes TXT data comparisons to support string/array storage. |
| test/rr/txt.js | Adds round-trip tests for multi-string TXT boundary preservation. |
| test/rr/rrsig.js | Adds acceptance tests for modern DNSSEC algorithms and invalid-algorithm rejection. |
| test/rr/ds.js | Adds SHA-384 digest + modern algorithm acceptance tests and adjusts invalid fixtures. |
| README.md | Documents dual ESM/CJS usage and default export access in CJS. |
| package.json | Bumps version to 1.8.0, adds CJS build + exports mapping, lowers Node engine to >=20. |
| dist/dns-rr.min.js | Updates bundled/minified browser artifact for the release. |
| CHANGELOG.md | Adds v1.8.0 release notes and tag link. |
| CONTRIBUTORS.md | Updates generated contributors list for the release. |
| .prettierignore | Ignores .release/ in formatting. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- lib/wire.js — hardened readWireName()
- reject truncated pointers (pos+1 past packet end)
- reject pointer targets past packet end
- reject truncated labels (declared length exceeds packet)
- reject reserved label-type codes (top bits 01/10)
- reject labels > 63 bytes
- reject unterminated names
- reject out-of-bounds offset
- new wirePackDomainCompressed() for RFC 1035 §4.1.4 name compression
- charstrs decoder preserves multi-string boundaries
- lib/bind.js — fromBind() returns array for charstrs (TXT) when input has multiple quoted strings.
- rr/rrsig.js — getAlgorithmOptions() extended with DNSSEC algorithms 6, 7, 8, 10, 13, 14, 15, 16.
- rr/ds.js — setDigestType() now accepts SHA-384 (4)
- rr/txt.js — getWireRdata() and fromTinydnsGeneric() preserve per-segment boundaries.
- package.json — engines lowered to >=20
- new build:cjs script via Rollup.
- test/wire.js, test/base.js, test/rr/{rrsig,ds,txt}.js — round-trip + negative tests for each fix.
- rr: add missing setters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.