Escape unprintable characters in invalid host names#2601
Conversation
… more details where invalid host names come from when we receive them from upstream. Before this change, such information is only available if debug.resolver = true which seems undesirable here See https://discourse.pi-hole.net/t/host-name-of-client-xxx-contains-at-least-one-invalid-character-at-position-0/69132/92?u=dl6er as reference for why we do this Signed-off-by: DL6ER <dl6er@dl6er.de>
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
Signed-off-by: Dominik <dl6er@dl6er.de>
|
Conflicts have been resolved. |
There was a problem hiding this comment.
Pull Request Overview
This PR improves the handling of invalid hostnames by escaping unprintable characters for better visibility and refactoring escape logic into a centralized function. The changes also enhance error logging for PTR resolution failures with more detailed information.
- Refactors string escaping into a centralized
escape_str()function - Fixes escape format to use proper
\xprefix instead of0xfor hex characters - Enhances PTR resolution error logging with detailed status information
Reviewed Changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/log.h | Updates function signature to use new escape_str() function |
| src/log.c | Implements new escape_str() function and fixes hex escape format |
| src/tools/dhcp-discover.c | Replaces manual escaping with escape_str() calls and fixes typo |
| src/shmem.c | Simplifies string escaping using new function |
| src/resolve.c | Enhances PTR resolution logging and uses new escape function |
| src/database/message-table.h | Renames function from logg_hostname_warning to log_hostname_warning |
| src/database/message-table.c | Simplifies hostname message formatting using escaped input |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
1 similar comment
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
|
Existing merge conflicts have not been addressed. This PR is considered abandoned. |
|
Conflicts have been resolved. |
Signed-off-by: Dominik <dl6er@dl6er.de>
5af94ef to
e1231ac
Compare
|
It there something still being unclear with this PR? Is some more information needed? |
|
I think it's just a matter of review capacity. |
…1 → 2026.02.0 (#45320) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/pi-hole/pihole](https://redirect.github.com/pi-hole/docker-pi-hole) | major | `91dc91d` → `ee34852` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/18710) for more information. Add the preset `:preserveSemverRanges` to your config if you don't want to pin your dependencies. --- ### Release Notes <details> <summary>pi-hole/docker-pi-hole (ghcr.io/pi-hole/pihole)</summary> ### [`v2026.02.0`](https://redirect.github.com/pi-hole/docker-pi-hole/releases/tag/2026.02.0) [Compare Source](https://redirect.github.com/pi-hole/docker-pi-hole/compare/2025.11.1...2026.02.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed (Docker Specific) - Pin base image by sha to catch silent rebuilds by [@​yubiuser](https://redirect.github.com/yubiuser) in [#​1965](https://redirect.github.com/pi-hole/docker-pi-hole/pull/1965) - Set fixed buildx version to mitigate issues with buildx version 0.31.1 by [@​yubiuser](https://redirect.github.com/yubiuser) in [#​1987](https://redirect.github.com/pi-hole/docker-pi-hole/pull/1987) **Full Changelog**: <pi-hole/docker-pi-hole@2025.11.1...2026.02.0> *** <!-- Release notes generated using configuration in .github/release.yml at development --> #### What's Changed (FTL v6.5) - Tweak undocumented wait-for option subtly by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2707](https://redirect.github.com/pi-hole/FTL/pull/2707) - update gravity - improve domain validation processing speed by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/FTL#2710](https://redirect.github.com/pi-hole/FTL/pull/2710) - Update embedded SQLite3 to 3.51.1 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2731](https://redirect.github.com/pi-hole/FTL/pull/2731) - Update embedded dnsmasq to 2.92rc1 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2730](https://redirect.github.com/pi-hole/FTL/pull/2730) - Fix documentation - Do not use equal sign with `pihole-FTL --config` command by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/FTL#2736](https://redirect.github.com/pi-hole/FTL/pull/2736) - Add dns.cache.rrtype by [@​Manakuremati](https://redirect.github.com/Manakuremati) in [pi-hole/FTL#2740](https://redirect.github.com/pi-hole/FTL/pull/2740) - Enhancements to the documentation markdown generator by [@​PromoFaux](https://redirect.github.com/PromoFaux) in [pi-hole/FTL#2741](https://redirect.github.com/pi-hole/FTL/pull/2741) - Network Overview - obtain MAC and hostname from dhcp.leases by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/FTL#2727](https://redirect.github.com/pi-hole/FTL/pull/2727) - fix: make `get_domains` parameters optional by [@​tien](https://redirect.github.com/tien) in [pi-hole/FTL#2278](https://redirect.github.com/pi-hole/FTL/pull/2278) - Escape unprintable characters in invalid host names by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2601](https://redirect.github.com/pi-hole/FTL/pull/2601) - Implement better allOf handling in API verifier by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2745](https://redirect.github.com/pi-hole/FTL/pull/2745) - Update build containers to Alpine 3.23 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2743](https://redirect.github.com/pi-hole/FTL/pull/2743) - Add option to hide network connection errors by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2749](https://redirect.github.com/pi-hole/FTL/pull/2749) - Harden default Content Security Policy (CSP) by [@​Erasure5959](https://redirect.github.com/Erasure5959) in [pi-hole/FTL#2754](https://redirect.github.com/pi-hole/FTL/pull/2754) - Fix computation of NTP server's root delay by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2760](https://redirect.github.com/pi-hole/FTL/pull/2760) - Teleporter: Fix for custom gravity.db path by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2758](https://redirect.github.com/pi-hole/FTL/pull/2758) - Upgrade embedded Lua to 5.5 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2626](https://redirect.github.com/pi-hole/FTL/pull/2626) - Add missing \[forwarded] property in GET /api/history/database by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2750](https://redirect.github.com/pi-hole/FTL/pull/2750) - Update SQLite3 to 3.51.2 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2761](https://redirect.github.com/pi-hole/FTL/pull/2761) - Low-memory hardware optimizations by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2757](https://redirect.github.com/pi-hole/FTL/pull/2757) - Reduce startup delay by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2725](https://redirect.github.com/pi-hole/FTL/pull/2725) - home.arpa and internal TLDs may be non-local without revServer by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2772](https://redirect.github.com/pi-hole/FTL/pull/2772) #### New Contributors - [@​Erasure5959](https://redirect.github.com/Erasure5959) made their first contribution in [pi-hole/FTL#2754](https://redirect.github.com/pi-hole/FTL/pull/2754) **Full Changelog**: <pi-hole/FTL@v6.4.1...v6.5> <!-- Release notes generated using configuration in .github/release.yml at development --> #### What's Changed (Web v6.4.1) - Set the end date for live query update to end of epoch by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/web#3677](https://redirect.github.com/pi-hole/web/pull/3677) - Improve initial loading of Query Log by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/web#3715](https://redirect.github.com/pi-hole/web/pull/3715) Also fixes two security advisories: - <GHSA-6xp4-jw73-f4qp>: fixed with [pi-hole/web@`d328f14`](https://redirect.github.com/pi-hole/web/commit/d328f143718022d82dc94c8751121ca41be3b996) - <GHSA-8rw8-vjgp-rwj6>: fixed with [pi-hole/web@`1a0c6f4`](https://redirect.github.com/pi-hole/web/commit/1a0c6f4fe6d0116fd2846b2adaae95996b7f194d) **Full Changelog**: <pi-hole/web@v6.4...v6.4.1> <!-- Release notes generated using configuration in .github/release.yml at development --> #### What's Changed (Core v6.4) - Remove wget from alpine dependencies by [@​darkexplosiveqwx](https://redirect.github.com/darkexplosiveqwx) in [pi-hole/pi-hole#6484](https://redirect.github.com/pi-hole/pi-hole/pull/6484) - Remove custom FTL FirewallD zone checks from debug log by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/pi-hole#6481](https://redirect.github.com/pi-hole/pi-hole/pull/6481) - Add Alpine 3.23 to test suite by [@​yubiuser](https://redirect.github.com/yubiuser) in [pi-hole/pi-hole#6488](https://redirect.github.com/pi-hole/pi-hole/pull/6488) - Debug log - Add colors to gravity tables by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/pi-hole#6485](https://redirect.github.com/pi-hole/pi-hole/pull/6485) - Use configured location for web repo when updating or repairing by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/pi-hole#6470](https://redirect.github.com/pi-hole/pi-hole/pull/6470) - Add missing `-g` to the message in gravity recovery command by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/pi-hole#6513](https://redirect.github.com/pi-hole/pi-hole/pull/6513) - Don't install unused /usr/local/share/man/man5 by [@​darkexplosiveqwx](https://redirect.github.com/darkexplosiveqwx) in [pi-hole/pi-hole#6526](https://redirect.github.com/pi-hole/pi-hole/pull/6526) **Full Changelog**: <pi-hole/pi-hole@v6.3...v6.4> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNi4xIiwidXBkYXRlZEluVmVyIjoiNDMuMjkuMiIsInRhcmdldEJyYW5jaCI6Im1hc3RlciIsImxhYmVscyI6WyJhcHAvcGlob2xlIiwicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9tYWpvciJdfQ==-->
…ag to v2026 This PR contains the following updates: | Package | Update | Change | |---|---|---| | [bigbeartechworld/big-bear-pihole-unbound](https://redirect.github.com/pi-hole/docker-pi-hole) | major | `2025.11.1` → `2026.02.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/17) for more information. --- ### Release Notes <details> <summary>pi-hole/docker-pi-hole (bigbeartechworld/big-bear-pihole-unbound)</summary> ### [`v2026.02.0`](https://redirect.github.com/pi-hole/docker-pi-hole/releases/tag/2026.02.0) [Compare Source](https://redirect.github.com/pi-hole/docker-pi-hole/compare/2025.11.1...2026.02.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed (Docker Specific) - Pin base image by sha to catch silent rebuilds by [@​yubiuser](https://redirect.github.com/yubiuser) in [#​1965](https://redirect.github.com/pi-hole/docker-pi-hole/pull/1965) - Set fixed buildx version to mitigate issues with buildx version 0.31.1 by [@​yubiuser](https://redirect.github.com/yubiuser) in [#​1987](https://redirect.github.com/pi-hole/docker-pi-hole/pull/1987) **Full Changelog**: <pi-hole/docker-pi-hole@2025.11.1...2026.02.0> *** <!-- Release notes generated using configuration in .github/release.yml at development --> #### What's Changed (FTL v6.5) - Tweak undocumented wait-for option subtly by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2707](https://redirect.github.com/pi-hole/FTL/pull/2707) - update gravity - improve domain validation processing speed by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/FTL#2710](https://redirect.github.com/pi-hole/FTL/pull/2710) - Update embedded SQLite3 to 3.51.1 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2731](https://redirect.github.com/pi-hole/FTL/pull/2731) - Update embedded dnsmasq to 2.92rc1 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2730](https://redirect.github.com/pi-hole/FTL/pull/2730) - Fix documentation - Do not use equal sign with `pihole-FTL --config` command by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/FTL#2736](https://redirect.github.com/pi-hole/FTL/pull/2736) - Add dns.cache.rrtype by [@​Manakuremati](https://redirect.github.com/Manakuremati) in [pi-hole/FTL#2740](https://redirect.github.com/pi-hole/FTL/pull/2740) - Enhancements to the documentation markdown generator by [@​PromoFaux](https://redirect.github.com/PromoFaux) in [pi-hole/FTL#2741](https://redirect.github.com/pi-hole/FTL/pull/2741) - Network Overview - obtain MAC and hostname from dhcp.leases by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/FTL#2727](https://redirect.github.com/pi-hole/FTL/pull/2727) - fix: make `get_domains` parameters optional by [@​tien](https://redirect.github.com/tien) in [pi-hole/FTL#2278](https://redirect.github.com/pi-hole/FTL/pull/2278) - Escape unprintable characters in invalid host names by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2601](https://redirect.github.com/pi-hole/FTL/pull/2601) - Implement better allOf handling in API verifier by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2745](https://redirect.github.com/pi-hole/FTL/pull/2745) - Update build containers to Alpine 3.23 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2743](https://redirect.github.com/pi-hole/FTL/pull/2743) - Add option to hide network connection errors by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2749](https://redirect.github.com/pi-hole/FTL/pull/2749) - Harden default Content Security Policy (CSP) by [@​Erasure5959](https://redirect.github.com/Erasure5959) in [pi-hole/FTL#2754](https://redirect.github.com/pi-hole/FTL/pull/2754) - Fix computation of NTP server's root delay by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2760](https://redirect.github.com/pi-hole/FTL/pull/2760) - Teleporter: Fix for custom gravity.db path by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2758](https://redirect.github.com/pi-hole/FTL/pull/2758) - Upgrade embedded Lua to 5.5 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2626](https://redirect.github.com/pi-hole/FTL/pull/2626) - Add missing \[forwarded] property in GET /api/history/database by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2750](https://redirect.github.com/pi-hole/FTL/pull/2750) - Update SQLite3 to 3.51.2 by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2761](https://redirect.github.com/pi-hole/FTL/pull/2761) - Low-memory hardware optimizations by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2757](https://redirect.github.com/pi-hole/FTL/pull/2757) - Reduce startup delay by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2725](https://redirect.github.com/pi-hole/FTL/pull/2725) - home.arpa and internal TLDs may be non-local without revServer by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/FTL#2772](https://redirect.github.com/pi-hole/FTL/pull/2772) #### New Contributors - [@​Erasure5959](https://redirect.github.com/Erasure5959) made their first contribution in [pi-hole/FTL#2754](https://redirect.github.com/pi-hole/FTL/pull/2754) **Full Changelog**: <pi-hole/FTL@v6.4.1...v6.5> <!-- Release notes generated using configuration in .github/release.yml at development --> #### What's Changed (Web v6.4.1) - Set the end date for live query update to end of epoch by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/web#3677](https://redirect.github.com/pi-hole/web/pull/3677) - Improve initial loading of Query Log by [@​DL6ER](https://redirect.github.com/DL6ER) in [pi-hole/web#3715](https://redirect.github.com/pi-hole/web/pull/3715) Also fixes two security advisories: - <GHSA-6xp4-jw73-f4qp>: fixed with [pi-hole/web@`d328f14`](https://redirect.github.com/pi-hole/web/commit/d328f143718022d82dc94c8751121ca41be3b996) - <GHSA-8rw8-vjgp-rwj6>: fixed with [pi-hole/web@`1a0c6f4`](https://redirect.github.com/pi-hole/web/commit/1a0c6f4fe6d0116fd2846b2adaae95996b7f194d) **Full Changelog**: <pi-hole/web@v6.4...v6.4.1> <!-- Release notes generated using configuration in .github/release.yml at development --> #### What's Changed (Core v6.4) - Remove wget from alpine dependencies by [@​darkexplosiveqwx](https://redirect.github.com/darkexplosiveqwx) in [pi-hole/pi-hole#6484](https://redirect.github.com/pi-hole/pi-hole/pull/6484) - Remove custom FTL FirewallD zone checks from debug log by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/pi-hole#6481](https://redirect.github.com/pi-hole/pi-hole/pull/6481) - Add Alpine 3.23 to test suite by [@​yubiuser](https://redirect.github.com/yubiuser) in [pi-hole/pi-hole#6488](https://redirect.github.com/pi-hole/pi-hole/pull/6488) - Debug log - Add colors to gravity tables by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/pi-hole#6485](https://redirect.github.com/pi-hole/pi-hole/pull/6485) - Use configured location for web repo when updating or repairing by [@​rrobgill](https://redirect.github.com/rrobgill) in [pi-hole/pi-hole#6470](https://redirect.github.com/pi-hole/pi-hole/pull/6470) - Add missing `-g` to the message in gravity recovery command by [@​rdwebdesign](https://redirect.github.com/rdwebdesign) in [pi-hole/pi-hole#6513](https://redirect.github.com/pi-hole/pi-hole/pull/6513) - Don't install unused /usr/local/share/man/man5 by [@​darkexplosiveqwx](https://redirect.github.com/darkexplosiveqwx) in [pi-hole/pi-hole#6526](https://redirect.github.com/pi-hole/pi-hole/pull/6526) **Full Changelog**: <pi-hole/pi-hole@v6.3...v6.4> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/bigbeartechworld/big-bear-universal-apps). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4zNi4yIiwidXBkYXRlZEluVmVyIjoiNDMuMzYuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=-->
What does this implement/fix?
Escape unprintable characters in invalid host names. Also, print some more details where invalid host names come from when we receive them from upstream. Before this change, such information is only available if
debug.resolver = truewhich seems undesirable here.See https://discourse.pi-hole.net/t/host-name-of-client-xxx-contains-at-least-one-invalid-character-at-position-0/69132/92?u=dl6er as reference for why we do this
Related issue or feature (if applicable): Discourse
Pull request in docs with documentation (if applicable): N/A
By submitting this pull request, I confirm the following:
git rebase)Checklist:
developmentbranch.