[SCM] PostGIS branch stable-3.6 updated. 3.6.4-145-g078722e0b
git at osgeo.org
git at osgeo.org
Tue Sep 8 10:16:13 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.6 has been updated
via 078722e0b17d6c4d1b5d21531da614cc0b6d193a (commit)
via b7a7e3caac85e3c35bb70973371f858a1e9272b7 (commit)
via 5cae8626ed12c2acd3b2a706e12a487a6f974974 (commit)
from effa73b6fe547c182f66b9f143029a20db4acaf0 (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 078722e0b17d6c4d1b5d21531da614cc0b6d193a
Merge: effa73b6f b7a7e3caa
Author: Darafei Praliaskouski <komzpa at gmail.com>
Date: Tue Sep 8 10:16:12 2026 -0700
Merge pull request '[3.6] [raster] Enforce postgis.enable_outdb_rasters' (!788) from Komzpa/postgis:codex/backpatch-outdb-stable-36-20260907 into stable-3.6
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/788
commit b7a7e3caac85e3c35bb70973371f858a1e9272b7
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 727d61763..ff187ea36 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,10 @@ PostGIS 3.6.5dev
* 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 5cae8626ed12c2acd3b2a706e12a487a6f974974
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 228717f36..33e766b17 100644
--- a/raster/rt_pg/rtpostgis.c
+++ b/raster/rt_pg/rtpostgis.c
@@ -460,7 +460,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;
static bool gdal_cpl_debug = false;
/* ---------------------------------------------------------------- */
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.in b/raster/test/regress/tests.mk.in
index 111be04e7..ab502d67a 100644
--- a/raster/test/regress/tests.mk.in
+++ b/raster/test/regress/tests.mk.in
@@ -21,7 +21,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 | 3 +-
raster/test/regress/rt_outdb_guc.sql | 88 +++++++++++++++++++++++++++++++
raster/test/regress/rt_outdb_guc_expected | 13 +++++
raster/test/regress/tests.mk.in | 3 +-
5 files changed, 109 insertions(+), 2 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