]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Schema-qualify unnest() in ALTER DATABASE ... RESET
authorTomas Vondra <tomas.vondra@postgresql.org>
Thu, 31 Jul 2025 13:15:44 +0000 (15:15 +0200)
committerTomas Vondra <tomas.vondra@postgresql.org>
Thu, 31 Jul 2025 14:04:55 +0000 (16:04 +0200)
Commit 9df8727c5067 failed to schema-quality the unnest() call in the
query used to list the variables in ALTER DATABASE ... RESET. If there's
another unnest() function in the search_path, this could cause either
failures, or even security issues (when the tab-completion gets used by
privileged accounts).

Report and fix by Dagfinn Ilmari MannsÃ¥ker. Backpatch to 18, same as
9df8727c5067.

Author: Dagfinn Ilmari MannsÃ¥ker <ilmari@ilmari.org>
Reviewed-by: jian he <jian.universality@gmail.com>
Discussion: https://postgr.es/m/87qzyghw2x.fsf%40wibble.ilmari.org
Discussion: https://postgr.es/m/87tt4lumqz.fsf%40wibble.ilmari.org
Backpatch-through: 18

src/bin/psql/tab-complete.in.c

index f2734f8f27349f84c0b67051e41b66dadcce4d51..39bf3024ed434296e373c4be247f1be88fc7bea7 100644 (file)
@@ -1002,7 +1002,7 @@ static const SchemaQuery Query_for_trigger_of_table = {
 
 #define Query_for_list_of_database_vars \
 "SELECT conf FROM ("\
-"       SELECT setdatabase, pg_catalog.split_part(unnest(setconfig),'=',1) conf"\
+"       SELECT setdatabase, pg_catalog.split_part(pg_catalog.unnest(setconfig),'=',1) conf"\
 "         FROM pg_db_role_setting "\
 "       ) s, pg_database d "\
 " WHERE s.setdatabase = d.oid "\