[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