[SCM] PostGIS branch stable-3.4 updated. 3.4.6-144-gc09db5548
git at osgeo.org
git at osgeo.org
Tue Sep 8 10:15:58 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.4 has been updated
via c09db5548575f10591bfd228c427f68f819ca2d0 (commit)
via 25fa1fe590be3a212f8cbadf0183f574c85c20eb (commit)
via 17e25ed29ee9e04c2952e23c2140033f28c10035 (commit)
from 58adc259c3c9c819a890d0a7a93ab4c582d9c70b (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 c09db5548575f10591bfd228c427f68f819ca2d0
Merge: 58adc259c 25fa1fe59
Author: Darafei Praliaskouski <komzpa at gmail.com>
Date: Tue Sep 8 10:15:57 2026 -0700
Merge pull request '[3.4] [raster] Enforce postgis.enable_outdb_rasters' (!786) from Komzpa/postgis:codex/backpatch-outdb-stable-34-20260907 into stable-3.4
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/786
commit 25fa1fe590be3a212f8cbadf0183f574c85c20eb
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 9a8191ad3..cae28b31c 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,10 @@ PostGIS 3.4.7
* 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)
- GT-675, Preserve TRIANGLE children while normalizing malformed TINs
(Darafei Praliaskouski)
- #6038, Avoid stale geometry_columns relation lookups after relations are
commit 17e25ed29ee9e04c2952e23c2140033f28c10035
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 44af11c79..f2e89c071 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