postgresql/src
Dean Rasheed c2e08b04c9 Fix RLS policy usage in MERGE.
If MERGE executes an UPDATE action on a table with row-level security,
the code incorrectly applied the WITH CHECK clauses from the target
table's INSERT policies to new rows, instead of the clauses from the
table's UPDATE policies. In addition, it failed to check new rows
against the target table's SELECT policies, if SELECT permissions were
required (likely to always be the case).

In addition, if MERGE executes a DO NOTHING action for matched rows,
the code incorrectly applied the USING clauses from the target table's
DELETE policies to existing target tuples. These policies were applied
as checks that would throw an error, if they did not pass.

Fix this, so that a MERGE UPDATE action applies the same RLS policies
as a plain UPDATE query with a WHERE clause, and a DO NOTHING action
does not apply any RLS checks (other than adding clauses from SELECT
policies to the join).

Back-patch to v15, where MERGE was introduced.

Dean Rasheed, reviewed by Stephen Frost.

Security: CVE-2023-39418
2023-08-07 09:28:47 +01:00
..
backend Fix RLS policy usage in MERGE. 2023-08-07 09:28:47 +01:00
bin Improve const use in zlib-using code 2023-08-07 09:34:38 +02:00
common Avoid memory leak in rmtree() when path cannot be opened 2023-07-31 11:36:44 +09:00
fe_utils Harmonize password reuse in vacuumdb, clusterdb, and reindexdb. 2023-07-28 10:07:44 -07:00
include Improve const use in zlib-using code 2023-08-07 09:34:38 +02:00
interfaces Add more SQL/JSON constructor functions 2023-07-26 17:08:33 +09:00
makefiles Remove --disable-thread-safety and related code. 2023-07-12 08:20:43 +12:00
pl Translation updates 2023-06-26 12:02:02 +02:00
port Add and use symbolic constants for tar header offsets and file types. 2023-08-01 13:50:42 -04:00
template Use unnamed POSIX semaphores on Cygwin. 2023-01-06 10:33:28 +13:00
test Fix RLS policy usage in MERGE. 2023-08-07 09:28:47 +01:00
timezone Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
tools Rename OverrideSearchPath to SearchPathMatcher. 2023-07-31 17:04:47 -07:00
tutorial Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
.gitignore
DEVELOPERS
Makefile Integrate pg_bsd_indent into our build/test infrastructure. 2023-02-12 12:22:21 -05:00
Makefile.global.in Remove --disable-thread-safety and related code. 2023-07-12 08:20:43 +12:00
Makefile.shlib autoconf: Rely on ar supporting index creation 2022-10-07 11:53:39 -07:00
meson.build Integrate pg_bsd_indent into our build/test infrastructure. 2023-02-12 12:22:21 -05:00
nls-global.mk Fix for make unportability 2022-07-13 09:15:01 +02:00