Repository navigation
v4.1.0
Unresolvable paths are reported to guard-core (v4.1.0)
- Added —
_populate_guard_state()swallowedResolver404and leftrequest.stateuntouched, which is indistinguishable from a view that simply carries no decorators. guard-core reads both as "nothing to enforce", so a resolution failure silently skips every per-route check — the fail-open half of GHSA-f2vm-w8gq-h378, reported against the Starlette adapter. Django resolves URLs itself, so this adapter has no equivalent matching bug, but it now reports the failure by settingrequest.state.guard_route_unresolved. With guard-core >= 3.7.0 andSecurityConfig.route_resolution_strict=True, those requests are logged, emit aroute_unresolvedevent, and are blocked with500. Behaviour is unchanged by default and on older guard-core, which ignores the attribute. - Fixed (tests) — The IPv6 and mixed IPv4/IPv6 allow-list tests still encoded pre-3.2.0 guard-core semantics, where the blacklist was evaluated before the whitelist. Since guard-core 3.2.0 an explicit whitelist match overrides the blacklist, so an address inside both a whitelist CIDR and a blacklist entry is now served rather than blocked. CI floats guard-core to the latest release and had not run here since 2026-05-28, so these only surfaced now; the adapter itself was correct throughout.
- Fixed (CI) — The greetings workflow passed
issue-message/pr-messagetoactions/first-interaction@v3, which expectsissue_message/pr_message, so the job failed on every first-time issue and pull request.
What's Changed
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #13
- Bump actions/setup-python from 6 to 7 by @dependabot[bot] in #14
- Bump actions/labeler from 6 to 7 by @dependabot[bot] in #15
- feat(middleware): report an unresolvable path to guard-core (v4.1.0) by @rennf93 in #16
Full Changelog: 4.0.1...4.1.0