[SCM] PostGIS branch stable-3.3 updated. 3.3.10-8-g281c3f70e
git at osgeo.org
git at osgeo.org
Mon Jun 8 10:29:53 PDT 2026
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".
The branch, stable-3.3 has been updated
via 281c3f70e293c32c6b05c625eb43b47062d5c4af (commit)
via d6e0a906d3665f58588d2b5086e9fe785dab5d1a (commit)
from 378c1bb3f4626abc30b4ef4d8289ab613d1034b8 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 281c3f70e293c32c6b05c625eb43b47062d5c4af
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date: Thu Jun 4 13:44:14 2026 -0700
News entry for #3916
diff --git a/NEWS b/NEWS
index dbd055e18..de3b09c39 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@ PostGIS 3.3.11
- Flatgeobuf schema mismatch vulnerability (NeuroWinter)
- #5899, pg_upgrade issue for non-standard geography SRID (Paul Ramsey)
+ - #5916, ST_Split hang with very large ordinates (Paul Ramsey)
PostGIS 3.3.10
commit d6e0a906d3665f58588d2b5086e9fe785dab5d1a
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date: Thu Jun 4 13:38:04 2026 -0700
Avoid Inf looping and memory use in ST_Split
When fed with very large coordinates, ST_Split could be
fooled into an Inf loop, this fixes that case,
closes #5916
diff --git a/liblwgeom/lwgeom_geos_split.c b/liblwgeom/lwgeom_geos_split.c
index 58f7f2725..3dba1d06d 100644
--- a/liblwgeom/lwgeom_geos_split.c
+++ b/liblwgeom/lwgeom_geos_split.c
@@ -282,9 +282,12 @@ lwline_split_by_point_to(const LWLINE* lwline_in, const LWPOINT* blade_in,
LWDEBUGF(3, "Projected point:(%.15g %.15g), seg:%d, p1:(%.15g %.15g), p2:(%.15g %.15g)", pt_projected.x, pt_projected.y, seg, p1.x, p1.y, p2.x, p2.y);
- /* When closest point == an endpoint, this is a boundary intersection */
- if ( ( (seg == nsegs-1) && P4D_SAME_STRICT(&pt_projected, &p2) ) ||
- ( (seg == 0) && P4D_SAME_STRICT(&pt_projected, &p1) ) )
+ /* When closest point == an endpoint, this is a boundary intersection.
+ * Compare only X and Y since pt_projected.x/y were forced to pt.x/y above,
+ * and Z/M may be NaN when line coordinates are very large (causing Inf/Inf
+ * in closest_point_on_segment). See #5916. */
+ if ( ( (seg == nsegs-1) && (pt_projected.x == p2.x) && (pt_projected.y == p2.y) ) ||
+ ( (seg == 0) && (pt_projected.x == p1.x) && (pt_projected.y == p1.y) ) )
{
return 1;
}
-----------------------------------------------------------------------
Summary of changes:
NEWS | 1 +
liblwgeom/lwgeom_geos_split.c | 9 ++++++---
2 files changed, 7 insertions(+), 3 deletions(-)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list