forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitc2e08b0
committed
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 targettable's INSERT policies to new rows, instead of the clauses from thetable's UPDATE policies. In addition, it failed to check new rowsagainst the target table's SELECT policies, if SELECT permissions wererequired (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'sDELETE policies to existing target tuples. These policies were appliedas checks that would throw an error, if they did not pass.Fix this, so that a MERGE UPDATE action applies the same RLS policiesas a plain UPDATE query with a WHERE clause, and a DO NOTHING actiondoes not apply any RLS checks (other than adding clauses from SELECTpolicies to the join).Back-patch to v15, where MERGE was introduced.Dean Rasheed, reviewed by Stephen Frost.Security:CVE-2023-394181 parenteeb4eee commitc2e08b0
File tree
4 files changed
+152
-50
lines changed- src
- backend
- executor
- rewrite
- test/regress
- expected
- sql
4 files changed
+152
-50
lines changedLines changed: 4 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2861 | 2861 |
| |
2862 | 2862 |
| |
2863 | 2863 |
| |
2864 |
| - | |
2865 |
| - | |
| 2864 | + | |
| 2865 | + | |
| 2866 | + | |
2866 | 2867 |
| |
2867 | 2868 |
| |
2868 | 2869 |
| |
2869 | 2870 |
| |
2870 |
| - | |
| 2871 | + | |
2871 | 2872 |
| |
2872 | 2873 |
| |
2873 | 2874 |
| |
|
Lines changed: 60 additions & 25 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
394 | 394 |
| |
395 | 395 |
| |
396 | 396 |
| |
397 |
| - | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
398 | 402 |
| |
399 | 403 |
| |
400 | 404 |
| |
| |||
410 | 414 |
| |
411 | 415 |
| |
412 | 416 |
| |
413 |
| - | |
414 |
| - | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
415 | 423 |
| |
416 | 424 |
| |
417 | 425 |
| |
418 | 426 |
| |
419 | 427 |
| |
420 | 428 |
| |
421 |
| - | |
422 |
| - | |
| 429 | + | |
| 430 | + | |
423 | 431 |
| |
424 | 432 |
| |
425 | 433 |
| |
426 | 434 |
| |
427 | 435 |
| |
428 | 436 |
| |
429 | 437 |
| |
430 |
| - | |
431 |
| - | |
| 438 | + | |
| 439 | + | |
432 | 440 |
| |
433 | 441 |
| |
434 | 442 |
| |
435 | 443 |
| |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
436 | 475 |
| |
437 |
| - | |
| 476 | + | |
| 477 | + | |
438 | 478 |
| |
439 | 479 |
| |
440 |
| - | |
441 |
| - | |
| 480 | + | |
| 481 | + | |
442 | 482 |
| |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
443 | 487 |
| |
444 | 488 |
| |
445 |
| - | |
446 |
| - | |
| 489 | + | |
| 490 | + | |
447 | 491 |
| |
448 | 492 |
| |
449 | 493 |
| |
| |||
454 | 498 |
| |
455 | 499 |
| |
456 | 500 |
| |
457 |
| - | |
458 |
| - | |
| 501 | + | |
| 502 | + | |
459 | 503 |
| |
460 | 504 |
| |
461 | 505 |
| |
462 |
| - | |
463 |
| - | |
464 |
| - | |
465 |
| - | |
466 |
| - | |
467 |
| - | |
468 |
| - | |
469 |
| - | |
470 |
| - | |
471 |
| - | |
472 |
| - | |
| 506 | + | |
| 507 | + | |
473 | 508 |
| |
474 | 509 |
| |
475 | 510 |
| |
|
Lines changed: 45 additions & 13 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2121 | 2121 |
| |
2122 | 2122 |
| |
2123 | 2123 |
| |
2124 |
| - | |
| 2124 | + | |
2125 | 2125 |
| |
2126 | 2126 |
| |
2127 |
| - | |
| 2127 | + | |
2128 | 2128 |
| |
2129 | 2129 |
| |
2130 | 2130 |
| |
| |||
2148 | 2148 |
| |
2149 | 2149 |
| |
2150 | 2150 |
| |
2151 |
| - | |
| 2151 | + | |
2152 | 2152 |
| |
2153 | 2153 |
| |
2154 | 2154 |
| |
2155 | 2155 |
| |
2156 |
| - | |
| 2156 | + | |
2157 | 2157 |
| |
2158 | 2158 |
| |
2159 | 2159 |
| |
2160 | 2160 |
| |
2161 | 2161 |
| |
2162 | 2162 |
| |
2163 | 2163 |
| |
2164 |
| - | |
| 2164 | + | |
2165 | 2165 |
| |
2166 | 2166 |
| |
2167 | 2167 |
| |
2168 | 2168 |
| |
2169 |
| - | |
| 2169 | + | |
2170 | 2170 |
| |
2171 | 2171 |
| |
2172 | 2172 |
| |
| |||
2205 | 2205 |
| |
2206 | 2206 |
| |
2207 | 2207 |
| |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
2208 | 2216 |
| |
2209 | 2217 |
| |
2210 | 2218 |
| |
| |||
2253 | 2261 |
| |
2254 | 2262 |
| |
2255 | 2263 |
| |
2256 |
| - | |
| 2264 | + | |
2257 | 2265 |
| |
2258 | 2266 |
| |
2259 | 2267 |
| |
2260 |
| - | |
| 2268 | + | |
2261 | 2269 |
| |
2262 | 2270 |
| |
2263 | 2271 |
| |
2264 | 2272 |
| |
2265 |
| - | |
| 2273 | + | |
2266 | 2274 |
| |
2267 | 2275 |
| |
2268 | 2276 |
| |
2269 | 2277 |
| |
2270 | 2278 |
| |
2271 | 2279 |
| |
| 2280 | + | |
| 2281 | + | |
| 2282 | + | |
| 2283 | + | |
| 2284 | + | |
| 2285 | + | |
| 2286 | + | |
| 2287 | + | |
| 2288 | + | |
| 2289 | + | |
| 2290 | + | |
| 2291 | + | |
| 2292 | + | |
| 2293 | + | |
| 2294 | + | |
| 2295 | + | |
| 2296 | + | |
| 2297 | + | |
| 2298 | + | |
| 2299 | + | |
| 2300 | + | |
| 2301 | + | |
| 2302 | + | |
2272 | 2303 |
| |
2273 | 2304 |
| |
2274 | 2305 |
| |
2275 | 2306 |
| |
2276 | 2307 |
| |
2277 | 2308 |
| |
2278 |
| - | |
2279 |
| - | |
| 2309 | + | |
| 2310 | + | |
2280 | 2311 |
| |
2281 | 2312 |
| |
2282 | 2313 |
| |
| |||
2290 | 2321 |
| |
2291 | 2322 |
| |
2292 | 2323 |
| |
2293 |
| - | |
2294 |
| - | |
| 2324 | + | |
| 2325 | + | |
| 2326 | + | |
2295 | 2327 |
| |
2296 | 2328 |
| |
2297 | 2329 |
| |
|
Lines changed: 43 additions & 9 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
821 | 821 |
| |
822 | 822 |
| |
823 | 823 |
| |
824 |
| - | |
| 824 | + | |
825 | 825 |
| |
826 | 826 |
| |
827 |
| - | |
| 827 | + | |
828 | 828 |
| |
829 | 829 |
| |
830 | 830 |
| |
| |||
833 | 833 |
| |
834 | 834 |
| |
835 | 835 |
| |
836 |
| - | |
| 836 | + | |
837 | 837 |
| |
838 | 838 |
| |
839 | 839 |
| |
840 | 840 |
| |
841 |
| - | |
| 841 | + | |
842 | 842 |
| |
843 | 843 |
| |
844 | 844 |
| |
| |||
847 | 847 |
| |
848 | 848 |
| |
849 | 849 |
| |
850 |
| - | |
| 850 | + | |
851 | 851 |
| |
852 | 852 |
| |
853 | 853 |
| |
854 | 854 |
| |
855 |
| - | |
| 855 | + | |
856 | 856 |
| |
857 | 857 |
| |
858 | 858 |
| |
| |||
892 | 892 |
| |
893 | 893 |
| |
894 | 894 |
| |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
895 | 904 |
| |
896 | 905 |
| |
897 | 906 |
| |
| |||
941 | 950 |
| |
942 | 951 |
| |
943 | 952 |
| |
944 |
| - | |
| 953 | + | |
945 | 954 |
| |
946 | 955 |
| |
947 | 956 |
| |
948 |
| - | |
| 957 | + | |
949 | 958 |
| |
950 | 959 |
| |
951 | 960 |
| |
952 | 961 |
| |
953 | 962 |
| |
954 | 963 |
| |
955 |
| - | |
| 964 | + | |
956 | 965 |
| |
957 | 966 |
| |
958 | 967 |
| |
959 | 968 |
| |
960 | 969 |
| |
961 | 970 |
| |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
962 | 996 |
| |
963 | 997 |
| |
964 | 998 |
| |
|
0 commit comments
Comments
(0)