[SCM] PostGIS branch stable-3.3 updated. 3.3.10-138-g4bfae5b54
git at osgeo.org
git at osgeo.org
Tue Sep 8 10:15: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 4bfae5b54cea43313c63e52252edb879be870ece (commit)
via ae8a57ac326ffb8efd8387e180933ea25812cbb3 (commit)
via 904393f8c84fe043b6230f7008911420ee70867c (commit)
via 46661b14dee6d32ab801b9f88df78823de56dbb7 (commit)
from 6f7bf676d71179c4b3b3eab9cf492ab7a7380300 (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 4bfae5b54cea43313c63e52252edb879be870ece
Merge: 6f7bf676d ae8a57ac3
Author: Darafei Praliaskouski <komzpa at gmail.com>
Date: Tue Sep 8 10:15:52 2026 -0700
Merge pull request '[3.3] [raster] Enforce postgis.enable_outdb_rasters' (!785) from Komzpa/postgis:codex/backpatch-outdb-stable-33-20260907 into stable-3.3
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.
Also backport the existing GDAL build fix to use PostgreSQL's Min macro.
References https://gitea.osgeo.org/postgis/postgis/pulls/779
Reviewed-on: https://gitea.osgeo.org/postgis/postgis/pulls/785
commit ae8a57ac326ffb8efd8387e180933ea25812cbb3
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date: Tue Mar 17 13:14:45 2026 -0700
Fix CI failure in garden
Cherry-picked-from: ab0fa8f3f46eda481a0195fd786932a0fba0e847
diff --git a/raster/rt_pg/rtpg_geometry.c b/raster/rt_pg/rtpg_geometry.c
index a4059a8bc..5bfd62ad9 100644
--- a/raster/rt_pg/rtpg_geometry.c
+++ b/raster/rt_pg/rtpg_geometry.c
@@ -1572,9 +1572,8 @@ Datum RASTER_asRaster(PG_FUNCTION_ARGS)
srs = NULL;
/* determine number of bands */
- /* MIN macro is from GDAL's cpl_port.h */
- num_bands = MIN(pixtypes_len, values_len);
- num_bands = MIN(num_bands, nodatavals_len);
+ num_bands = Min(pixtypes_len, values_len);
+ num_bands = Min(num_bands, nodatavals_len);
POSTGIS_RT_DEBUGF(3, "RASTER_asRaster: pixtypes_len = %d", pixtypes_len);
POSTGIS_RT_DEBUGF(3, "RASTER_asRaster: values_len = %d", values_len);
POSTGIS_RT_DEBUGF(3, "RASTER_asRaster: nodatavals_len = %d", nodatavals_len);
commit 904393f8c84fe043b6230f7008911420ee70867c
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 37c95baaa..cce344bc7 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,10 @@ PostGIS 3.3.11
* Bug Fixes and Enhancements *
+ - 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 46661b14dee6d32ab801b9f88df78823de56dbb7
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 2fe1d18bf..ba028281d 100644
--- a/raster/rt_pg/rtpostgis.c
+++ b/raster/rt_pg/rtpostgis.c
@@ -454,7 +454,8 @@ 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 */
@@ -823,4 +824,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/rtpg_geometry.c | 5 +-
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 +-
6 files changed, 111 insertions(+), 6 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