Re: Converting contrib SQL functions to new style
Noah Misch <noah@leadboat.com>
On Tue, Nov 12, 2024 at 05:30:30PM +0900, Michael Paquier wrote: > 0004 for pg_freespace is fine regarding that for example as we have > calls of pg_freespace(regclass) in its sql/. I've applied it to begin > with something. That commit (3f323eb) contains a generate_series(int, bigint) call. Following https://www.postgresql.org/docs/current/ddl-schemas.html#DDL-SCHEMAS-PATTERNS is enough in v17, but it wouldn't be enough after that commit. An attacker can achieve persistent capture of the inexact call: set search_path = pg_catalog; create or replace function public.generate_series(int, bigint) returns bigint language plpgsql as $$ BEGIN RAISE NOTICE 'owned'; RETURN 0; END $$; create extension pg_freespacemap schema public; select public.pg_freespace(0); \sf public.pg_freespace(regclass) Per postgr.es/m/3489827.1618411777@sss.pgh.pa.us and postgr.es/m/1471865.1734212070@sss.pgh.pa.us one requirement for migrating to SQL-standard function bodies is removing these inexact-match function and operator calls. Here, one could either write pg_catalog.generate_series or make the argument types match exactly.
Commits
-
Use @extschema:name@ notation in contrib transform modules.
- bebe9040388b 18.0 landed
-
pg_freespacemap: Fix declaration of pg_freespace(regclass)
- e0c3d5122e6a 18.0 landed
-
contrib/pageinspect: Use SQL-standard function bodies.
- 68ff25eef125 18.0 landed
-
contrib/xml2: Use SQL-standard function bodies.
- 667368fd26de 18.0 landed
-
contrib/citext: Use SQL-standard function bodies.
- 97a5a16849eb 18.0 landed
-
contrib/earthdistance: Use SQL-standard function bodies.
- 969bbd0fafc0 18.0 landed
- 3652de36e432 17.3 landed
- 31daa10facec 16.7 landed
-
contrib/lo: Use SQL-standard function bodies
- 13e3796c906b 18.0 landed
-
xml2: Add tests for functions xpath_nodeset() and xpath_list()
- 93f9b4a93fef 18.0 landed
-
contrib/lo: Add test for function lo_oid()
- 3ef038fc4f76 18.0 landed
-
pg_freespacemap: Use SQL-standard function bodies
- 3f323eba89fb 18.0 landed
-
Add @extschema:name@ and no_relocate options to extensions.
- 72a5b1fc8804 16.0 cited
-
Make contrib modules' installation scripts more secure.
- 7eeb1d9861b0 14.0 cited