Repository navigation
chore(deps): bump urllib3 from 2.7.0 to 2.8.0 - #12
dependabot[bot] wants to merge 1 commit into
Conversation
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.7.0 to 2.8.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](urllib3/urllib3@2.7.0...2.8.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.8.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| [[package]] | ||
| name = "urllib3" | ||
| version = "2.7.0" | ||
| version = "2.8.0" |
There was a problem hiding this comment.
🔥 The Roast: Three high-severity advisories stroll through the lockfile while the front door to PyPI is left politely ajar behind them. urllib3 is not declared anywhere in pyproject.toml — it rides along as a ghost dependency inside requests, boto3, giteapy, and PyGithub. A fresh pip install pr-agent happens to drag 2.8.0 along for the ride, but any environment that already has urllib3 2.7.0 installed gets a friendly "Requirement already satisfied" and stays vulnerable, because pip has no reason to touch a transitive dependency that still fits requests' <3 cap. So this PR patches our lockfile (and therefore our Docker/CI builds) while the very people who pip install pr-agent keep the vulnerable version. Meanwhile pr_agent/git_providers/gerrit_provider.py:15 does a plain import urllib3.util, so we are not even a transitive consumer — we are a direct one in a trench coat.
🩹 The Fix: Declare it with a floor, exactly as your own policy at pyproject.toml:28-31 demands ("Security-sensitive packages below declare >=patched,<next-major ranges ... the floor is the last vetted patched release", The-PR-Agent#2523) and as the certifi precedent did in The-PR-Agent#3204 (bf05b468 added certifi>=2026.7.22 plus tests/unittest/test_certifi_pin_policy.py):
"urllib3>=2.8.0,<3",Re-run uv lock afterwards, and add a guard test next to test_certifi_pin_policy.py asserting urllib3 declares a floor rather than an == pin, so the next dependabot bump cannot quietly drop the guarantee again.
📏 Severity: warning
| [[package]] | ||
| name = "urllib3" | ||
| version = "2.7.0" | ||
| version = "2.8.0" |
There was a problem hiding this comment.
🔥 The Roast: urllib3.util.parse_url — the one and only urllib3 API this codebase calls directly — just got a personality transplant in 2.8.0: "Fixed URL parsing to more strictly enforce RFC 3986 host syntax, rejecting invalid host input such as raw spaces and control characters, malformed percent-encodings, and percent-encoded control characters in HTTP(S) hosts". Meanwhile GerritProvider.__init__ (pr_agent/git_providers/gerrit_provider.py:226-229) hands the operator-supplied gerrit.url straight into parse_url and then immediately dereferences parsed.scheme, parsed.host, parsed.port with zero guard rails. 2.7 was lenient about host syntax; 2.8.0 explicitly tightened it, so hosts that used to parse fine can now be rejected — and the parser signals that by handing back None or raising, not by returning a Url you can trust. The result would be a provider that detonates at init with AttributeError: 'NoneType' object has no attribute 'scheme', a crash message that tells an operator precisely nothing. The shipped example config even uses a non-HTTP scheme (# url = "ssh://gerrit.example.com:29418", pr_agent/settings/configuration.toml:407), so the validation path that actually matters here is not even the one the upstream notes spell out. And no test in the suite pins a gerrit.url that would catch any of this.
🩹 The Fix: Treat the parse as fallible and turn a bad URL into an actionable config error instead of an AttributeError (add import urllib3.exceptions alongside the existing import urllib3.util):
try:
parsed = urllib3.util.parse_url(base_url)
except urllib3.exceptions.LocationParseError as e:
raise ValueError(f"Invalid gerrit.url {base_url!r}: {e}") from e
if parsed is None or not parsed.host:
raise ValueError(f"Invalid gerrit.url {base_url!r}")Add unit tests in tests/unittest/test_gerrit_provider.py: one feeding a host 2.8 rejects (raw space, control character, malformed percent-encoding) and asserting a clear ValueError rather than a TypeError/AttributeError, plus one keeping the shipped ssh:// example working.
📏 Severity: suggestion
Code Review Roast 🔥Verdict: 2 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)
🏆 Best part: The bump itself is pristine — three lines, correct hashes, no stray lockfile churn, no 💀 Worst part: The security fix only reaches this repo's own builds. 📊 Overall: A well-executed lockfile bump that patched the server and left the front porch unlocked. Add the floor, guard the one parse call, and this becomes a genuinely good dependency PR. Fix these issues in Kilo Cloud Files Reviewed (1 files)
Context read (unchanged, for verification)
Reviewed by free · Input: 80K · Output: 24.6K · Cached: 1.3M |
Bumps urllib3 from 2.7.0 to 2.8.0.
Release notes
Sourced from urllib3's releases.
... (truncated)
Changelog
Sourced from urllib3's changelog.
... (truncated)
Commits
b1d30abRelease 2.8.09016d7eSkiptest_read_chunked_with_trailing_data_does_not_hangfor brotlicffi (#5258)9101f58Fixnox -s docswarning (#5256)cd770b0Merge commit from forkea2ad7bMerge commit from fork0716e31Fix loading unencrypted client keys with a password in pyOpenSSL (#5255)43c68c8Test pickling ofInvalidChunkLength(#5247)308b279Share security policy between GitHub and Read the Docs (#5253)53fa073Add policy on duplicate pull requests (#5252)5f2a6a8Assert on the ALPN extension in test_tunnel_sets_http_11_alpn (#5232)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.
Summary by cubic
Updates
urllib3from2.7.0to2.8.0, fixing three security advisories: HTTPS proxy TLS configuration being overridden (GHSA-8988-9cw3-xx77), unbounded chunk-size line buffering (GHSA-vxq7-64xx-v4gw), and an infinite loop in chunked Deflate streaming (GHSA-gh4c-6fx4-qh6g).Migration
proxy_ssl_context/proxy_assert_hostname/proxy_assert_fingerprint; destination TLS settings no longer apply to forwarding proxy connections.Written for commit f606c93. Summary will update on new commits.