@@ -21,10 +21,26 @@ python = "^3.10"
2121# a wheel and never runs setup.py on DBR LTS -- the build-time break cannot
2222# trigger. The `DBR LTS Install` CI check (.github/workflows/dbr-lts-install.yml)
2323# installs the built artifact on real DBR LTS clusters and is the authoritative
24- # gate for this. Cap at <0.25.0: thrift is pre-1.0, each 0.x minor can carry
25- # breaking changes or packaging regressions (see 0.23.0), so bump this
26- # deliberately once a new minor ships and the DBR-LTS gate proves it safe.
27- thrift = " ~=0.24.0"
24+ # gate for this.
25+ #
26+ # Ceiling raised to <0.26.0 for 0.25.0 (released 2026-09-30, THRIFT-6067 series
27+ # follow-up), which fixes 61 CVEs across language bindings, several affecting
28+ # the Python binding this connector uses (see #969), e.g. CVE-2026-66858
29+ # (skip() recursion-limit bypass in the Python accelerator) and CVE-2026-85494
30+ # (framed transport / binary protocol size a read buffer from a peer-declared
31+ # length with no effective maximum). 0.25.0 ships the same prebuilt wheel
32+ # matrix as 0.24.0 (manylinux2014/macOS/musl/Windows, cp310-cp314), so the
33+ # DBR LTS build-time risk above does not apply; the `DBR LTS Install` CI gate
34+ # remains the authoritative check. thrift is pre-1.0, so keep this ceiling one
35+ # minor ahead and bump deliberately once a newer minor ships and the DBR-LTS
36+ # gate proves it safe -- do not use an open-ended `^`/`>=` constraint.
37+ #
38+ # NOTE: 0.25.0 also changes TBinaryProtocol's default `string_length_limit`
39+ # from unbounded to ~15.6 MiB (see the explicit `string_length_limit=None` /
40+ # `container_length_limit=None` passed in thrift_backend.py's protocol
41+ # construction, which preserves the connector's pre-0.25 unbounded behavior
42+ # for its own already-bounded, trusted-server result stream).
43+ thrift = " >=0.24.0,<0.26.0"
2844pandas = [
2945 { version = " >=1.2.5,<4.0.0" , python = " >=3.10,<3.13" },
3046 { version = " >=2.2.3,<4.0.0" , python = " >=3.13" }
0 commit comments