Skip to content

[pull] main from django:main - #522

Merged
pull[bot] merged 6 commits into
threatcode:mainfrom
django:main
Aug 4, 2026
Merged

[pull] main from django:main#522
pull[bot] merged 6 commits into
threatcode:mainfrom
django:main

Conversation

@pull

@pull pull Bot commented Aug 4, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

jacobtylerwalls and others added 6 commits August 4, 2026 08:49
…ookups.

Spatial lookups optimistically parse values as rasters before retrying
as geometries. If a malicious value reached the GDALRaster constructor,
depending on the raster driver, it might write to disk or fetch from the
network regardless of the constructor's `write=False` default argument.

Although this works as designed for model field assignment, this is
potentially unexpected for querying, for example, in the admin's
changelist view, which allows staff users to execute arbitrary lookups
on models registered with the admin.

Network rasters didn't even work in lookup contexts before, providing
further evidence that this use case was unintentional. (The failure
point was after the fetching, however.)

Now, strings and dicts representing rasters are rejected by spatial
lookups. To opt in to using them, wrap them in a `GDALRaster` first.

Although it would simplify the implementation to try geometries before
rasters (instead of stashing a raster exception and raising it later),
we maintain the current order, which has been stable for a decade.

Thanks Bence Nagy, localhost-detect, and kimchunbok_ for providing
information useful in evaluating this report. Thanks Simon Charette,
Natalia Bidart, and Sarah Boyce for reviews.
Language codes longer than 500 characters are now rejected before the
cached lookup, so they are no longer retained as cache keys consuming
memory from each process.

Thanks Jaeyoung Jang for the report, and Sarah Boyce for reviews.
…ollections.

Since deeply nested geometry collections can lead to fatal errors in
GEOS, a new `max_geom_collections` argument on geometry model and form
fields, passed down to `GEOSGeometry` itself, allows limiting either
depth (WKT) or total number (WKB) before reaching GEOS.

Thanks Andrew MacPherson and kimchunbok_ for the reports, and Natalia
Bidart, Simon Charette, and Sarah Boyce for reviews.
… rendering admin links.

The admin renders URLField values as clickable links on changelists and
read-only change forms. The link was built without validating the URL,
so a potentially dangerous stored value could be rendered as a link that
runs script in a staff member's authenticated session when clicked.

The admin renders URLField values as clickable links on changelists and
read-only change forms. The link was built without validating the URL,
so a stored value using a potentially dangerous value was rendered as a
link, which could lead to cross-site scripting in an authenticated admin
session.

Refs CVE-2019-12308, #36032.

Thanks to Egor Saltykov for the report, and Sarah Boyce for reviews.
…ult feature flag.

Oracle 23.9 supported UUID() in SELECT contexts, but use in column defaults
fails until 23.26.2.0 with:

django.db.utils.DatabaseError: ORA-04044: procedure, function, package, or type is not allowed here
@pull pull Bot locked and limited conversation to collaborators Aug 4, 2026
@pull pull Bot added the ⤵️ pull label Aug 4, 2026
@pull
pull Bot merged commit f00270d into threatcode:main Aug 4, 2026
7 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants