[SCM] PostGIS branch stable-3.5 updated. 3.5.7-144-g26d270d4b

git at osgeo.org git at osgeo.org
Tue Sep 8 10:16:05 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.5 has been updated
       via  26d270d4b9436ce91d032b050a33c9627ec0fe3f (commit)
       via  673edfbce634936ee826ad74f3c6116b228066e2 (commit)
       via  60a296cc85caa89e0e6335bfa8e58ca80300a72a (commit)
      from  f0cdc854901ea6f02ec81dcb751f1355e3739af7 (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 26d270d4b9436ce91d032b050a33c9627ec0fe3f
Merge: f0cdc8549 673edfbce
Author: Darafei Praliaskouski <komzpa at gmail.com>
Date:   Tue Sep 8 10:16:04 2026 -0700

    Merge pull request '[3.5] [raster] Enforce postgis.enable_outdb_rasters' (!787) from Komzpa/postgis:codex/backpatch-outdb-stable-35-20260907 into stable-3.5
    
    Bind postgis.enable_outdb_rasters to the core offline-band guard used by
    metadata and pixel reads. The documented default off setting now takes
    effect, while explicitly enabling out-db rasters preserves those reads.
    In-database rasters are unaffected.
    
    References https://gitea.osgeo.org/postgis/postgis/pulls/779
    
    Reviewed-on: https://gitea.osgeo.org/postgis/postgis/pulls/787


commit 673edfbce634936ee826ad74f3c6116b228066e2
Author: Darafei Praliaskouski <me at komzpa.net>
Date:   Tue Sep 8 01:24:28 2026 +0400

    NEWS: record GT-779 out-db GUC enforcement

diff --git a/NEWS b/NEWS
index 8cd60959a..b044ef9be 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,10 @@ PostGIS 3.5.8dev
 
 * Bug Fixes *
 
+  - GT-779, [raster] Make postgis.enable_outdb_rasters=off enforce offline-band
+    metadata and pixel-read restrictions after upgrade
+    (reported by Sarath Kumar, IITM Pravartak Security Team;
+    fixed by Darafei Praliaskouski)
   - #6120, Improve topology robustness by restoring edge collapse handling
            during building (Sandro Santilli)
   - GT-675, Preserve TRIANGLE children while normalizing malformed TINs

commit 60a296cc85caa89e0e6335bfa8e58ca80300a72a
Author: Darafei Praliaskouski <me at komzpa.net>
Date:   Mon Sep 7 23:25:33 2026 +0400

    [raster] Enforce postgis.enable_outdb_rasters
    
    Cherry-picked-from: a9634c0c735ae492efb3099d0cff0d26d0ce74be

diff --git a/raster/rt_pg/rtpostgis.c b/raster/rt_pg/rtpostgis.c
index 0ec8b1d6c..bd03b04ef 100644
--- a/raster/rt_pg/rtpostgis.c
+++ b/raster/rt_pg/rtpostgis.c
@@ -461,7 +461,8 @@ rt_pg_vsi_check_options(char **newval, void **extra, GucSource source)
 static char *gdal_datapath = NULL;
 static char *gdal_vsi_options = NULL;
 static char *gdal_enabled_drivers = NULL;
-static bool enable_outdb_rasters = false;
+/* Defined in rt_band.c and used by the offline-band access guards. */
+extern bool enable_outdb_rasters;
 
 /* ---------------------------------------------------------------- */
 /*  Useful variables                                                */
@@ -830,4 +831,3 @@ _PG_fini(void) {
 }
 
 
-
diff --git a/raster/test/regress/rt_outdb_guc.sql b/raster/test/regress/rt_outdb_guc.sql
new file mode 100644
index 000000000..1547c7d65
--- /dev/null
+++ b/raster/test/regress/rt_outdb_guc.sql
@@ -0,0 +1,88 @@
+CREATE FUNCTION outdb_guc_can_read_metadata(rast raster)
+RETURNS boolean
+AS $$
+BEGIN
+	PERFORM ST_BandFileSize(rast, 1);
+	RETURN true;
+EXCEPTION WHEN OTHERS THEN
+	RETURN false;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE FUNCTION outdb_guc_can_read_pixel(rast raster)
+RETURNS boolean
+AS $$
+BEGIN
+	PERFORM ST_Value(rast, 1, 1, 1);
+	RETURN true;
+EXCEPTION WHEN OTHERS THEN
+	RETURN false;
+END;
+$$ LANGUAGE plpgsql;
+
+DO $$
+BEGIN
+	PERFORM postgis_raster_lib_version();
+END;
+$$;
+
+CREATE ROLE outdb_guc_regression_guest;
+GRANT SELECT ON raster_outdb_template TO outdb_guc_regression_guest;
+GRANT EXECUTE ON FUNCTION outdb_guc_can_read_metadata(raster) TO outdb_guc_regression_guest;
+GRANT EXECUTE ON FUNCTION outdb_guc_can_read_pixel(raster) TO outdb_guc_regression_guest;
+
+SET postgis.gdal_enabled_drivers = 'GTiff';
+RESET postgis.enable_outdb_rasters;
+SHOW postgis.enable_outdb_rasters;
+SET ROLE outdb_guc_regression_guest;
+SELECT 'off_metadata', outdb_guc_can_read_metadata(rast)
+FROM raster_outdb_template WHERE rid = 1;
+SELECT 'off_pixel', outdb_guc_can_read_pixel(rast)
+FROM raster_outdb_template WHERE rid = 1;
+SELECT 'off_indb_pixel', (
+	ST_Value(
+		ST_AddBand(
+			ST_MakeEmptyRaster(1, 1, 0, 0, 1, -1, 0, 0, 0),
+			1, '8BUI', 7, 0
+		),
+		1, 1, 1
+	) = 7
+);
+
+RESET ROLE;
+SET postgis.enable_outdb_rasters = true;
+SET ROLE outdb_guc_regression_guest;
+SELECT 'on_metadata', outdb_guc_can_read_metadata(rast)
+FROM raster_outdb_template WHERE rid = 1;
+SELECT 'on_pixel', outdb_guc_can_read_pixel(rast)
+FROM raster_outdb_template WHERE rid = 1;
+
+RESET ROLE;
+RESET postgis.enable_outdb_rasters;
+SHOW postgis.enable_outdb_rasters;
+SET ROLE outdb_guc_regression_guest;
+SELECT 'reset_metadata', outdb_guc_can_read_metadata(rast)
+FROM raster_outdb_template WHERE rid = 1;
+SELECT 'reset_pixel', outdb_guc_can_read_pixel(rast)
+FROM raster_outdb_template WHERE rid = 1;
+
+RESET ROLE;
+BEGIN;
+SET postgis.enable_outdb_rasters = true;
+SHOW postgis.enable_outdb_rasters;
+ROLLBACK;
+SHOW postgis.enable_outdb_rasters;
+SET ROLE outdb_guc_regression_guest;
+SELECT 'rollback_metadata', outdb_guc_can_read_metadata(rast)
+FROM raster_outdb_template WHERE rid = 1;
+SELECT 'rollback_pixel', outdb_guc_can_read_pixel(rast)
+FROM raster_outdb_template WHERE rid = 1;
+
+RESET ROLE;
+SET postgis.enable_outdb_rasters = true;
+REVOKE SELECT ON raster_outdb_template FROM outdb_guc_regression_guest;
+REVOKE EXECUTE ON FUNCTION outdb_guc_can_read_metadata(raster) FROM outdb_guc_regression_guest;
+REVOKE EXECUTE ON FUNCTION outdb_guc_can_read_pixel(raster) FROM outdb_guc_regression_guest;
+DROP FUNCTION outdb_guc_can_read_metadata(raster);
+DROP FUNCTION outdb_guc_can_read_pixel(raster);
+DROP ROLE outdb_guc_regression_guest;
diff --git a/raster/test/regress/rt_outdb_guc_expected b/raster/test/regress/rt_outdb_guc_expected
new file mode 100644
index 000000000..dac34286f
--- /dev/null
+++ b/raster/test/regress/rt_outdb_guc_expected
@@ -0,0 +1,13 @@
+off
+off_metadata|f
+off_pixel|f
+off_indb_pixel|t
+on_metadata|t
+on_pixel|t
+off
+reset_metadata|f
+reset_pixel|f
+on
+off
+rollback_metadata|f
+rollback_pixel|f
diff --git a/raster/test/regress/tests.mk b/raster/test/regress/tests.mk
index 00918e134..71bd28f1e 100644
--- a/raster/test/regress/tests.mk
+++ b/raster/test/regress/tests.mk
@@ -19,7 +19,8 @@ override RUNTESTFLAGS_INTERNAL := \
 
 RASTER_TEST_FIRST = \
 	$(top_srcdir)/raster/test/regress/check_gdal \
-	$(top_srcdir)/raster/test/regress/loader/load_outdb
+	$(top_srcdir)/raster/test/regress/loader/load_outdb \
+	$(top_srcdir)/raster/test/regress/rt_outdb_guc
 
 RASTER_TEST_LAST = \
 	$(top_srcdir)/raster/test/regress/clean

-----------------------------------------------------------------------

Summary of changes:
 NEWS                                      |  4 ++
 raster/rt_pg/rtpostgis.c                  |  4 +-
 raster/test/regress/rt_outdb_guc.sql      | 88 +++++++++++++++++++++++++++++++
 raster/test/regress/rt_outdb_guc_expected | 13 +++++
 raster/test/regress/tests.mk              |  3 +-
 5 files changed, 109 insertions(+), 3 deletions(-)
 create mode 100644 raster/test/regress/rt_outdb_guc.sql
 create mode 100644 raster/test/regress/rt_outdb_guc_expected


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list