Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@thevilledev
Copy link
Collaborator

@thevilledev thevilledev commented Oct 1, 2025

1. Why is this pull request needed and what does it do?

The coredns/caddy lexer replaces invalid UTF‑8 bytes in tokens with U+FFFD. When that lossy-decoded value is used as dbfile in the sign plugin, the source zone file path never exists. On startup/refresh, the resign() function sees the signed file missing and triggers signing. Consequently Sign() then fails opening the bogus path, the signed file is never created, and the cycle repeats across all expanded origins (e.g., reverse CIDRs), causing unbounded churn/OOM.

Validate dbfile in setup and error if it contains U+FFFD. Add a regression test.

Note: Unicode paths are supported; only U+FFFD (replacement-rune) is rejected.

2. Which issues (if any) are related?

Fixes OSS-Fuzz finding #448571099 (not publicly accessible yet).

3. Which documentation changes (if any) need to be made?

None.

4. Does this introduce a backward incompatible change or deprecation?

No.

The coredns/caddy lexer replaces invalid UTF‑8 bytes in tokens with
U+FFFD. When that lossy-decoded value is used as `dbfile` in the sign
plugin, the source zone file path never exists. On startup/refresh,
the `resign()` function sees the signed file missing and triggers
signing. Consequently `Sign()` then fails opening the bogus path,
the signed file is never created, and the cycle repeats across all
expanded origins (e.g., reverse CIDRs), causing unbounded churn/OOM.

Validate `dbfile` in setup and error if it contains U+FFFD. Add a
regression test.

Note: Unicode paths are supported; only U+FFFD (replacement-rune) is rejected.

Signed-off-by: Ville Vesilehto <[email protected]>
@thevilledev
Copy link
Collaborator Author

@yongtang IMO this can flow to the next patch version, especially since the 1.13.0 notes are prepared already & pending for release run.

@codecov
Copy link

codecov bot commented Oct 1, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 62.61%. Comparing base (93c57b6) to head (23bca01).
⚠️ Report is 1676 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7589      +/-   ##
==========================================
+ Coverage   55.70%   62.61%   +6.91%     
==========================================
  Files         224      278      +54     
  Lines       10016    18571    +8555     
==========================================
+ Hits         5579    11628    +6049     
- Misses       3978     6257    +2279     
- Partials      459      686     +227     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@yongtang yongtang merged commit 6676e61 into coredns:master Oct 6, 2025
16 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants