postgresql/src/bin/pg_dump
Tom Lane 3d2aed664e Avoid using unsafe search_path settings during dump and restore.
Historically, pg_dump has "set search_path = foo, pg_catalog" when
dumping an object in schema "foo", and has also caused that setting
to be used while restoring the object.  This is problematic because
functions and operators in schema "foo" could capture references meant
to refer to pg_catalog entries, both in the queries issued by pg_dump
and those issued during the subsequent restore run.  That could
result in dump/restore misbehavior, or in privilege escalation if a
nefarious user installs trojan-horse functions or operators.

This patch changes pg_dump so that it does not change the search_path
dynamically.  The emitted restore script sets the search_path to what
was used at dump time, and then leaves it alone thereafter.  Created
objects are placed in the correct schema, regardless of the active
search_path, by dint of schema-qualifying their names in the CREATE
commands, as well as in subsequent ALTER and ALTER-like commands.

Since this change requires a change in the behavior of pg_restore
when processing an archive file made according to this new convention,
bump the archive file version number; old versions of pg_restore will
therefore refuse to process files made with new versions of pg_dump.

Security: CVE-2018-1058
2018-02-26 10:18:21 -05:00
..
po Translation updates 2017-08-07 13:55:34 -04:00
t Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
.gitignore Clean up after pg_dump test runs. 2016-05-06 22:28:01 -04:00
common.c Fix assorted errors in pg_dump's handling of extended statistics objects. 2018-02-11 13:24:15 -05:00
compress_io.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
compress_io.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
dumputils.c Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
dumputils.h Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
Makefile Update copyright for 2018 2018-01-02 23:30:12 -05:00
nls.mk Translation updates 2017-08-07 13:55:34 -04:00
parallel.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
parallel.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_backup.h Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
pg_backup_archiver.c Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
pg_backup_archiver.h Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
pg_backup_custom.c Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
pg_backup_db.c In pg_dump, force reconnection after issuing ALTER DATABASE SET command(s). 2018-01-23 10:55:16 -05:00
pg_backup_db.h Add some const decorations to prototypes 2017-11-10 13:38:57 -05:00
pg_backup_directory.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_backup_null.c Reduce excessive dereferencing of function pointers 2017-09-07 13:56:09 -04:00
pg_backup_tar.c Final pgindent + perltidy run for v10. 2017-08-14 17:29:33 -04:00
pg_backup_tar.h Fix tar files emitted by pg_dump and pg_basebackup to be POSIX conformant. 2012-09-28 15:19:15 -04:00
pg_backup_utils.c Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_backup_utils.h Update copyright for 2018 2018-01-02 23:30:12 -05:00
pg_dump.c Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
pg_dump.h Fix assorted errors in pg_dump's handling of extended statistics objects. 2018-02-11 13:24:15 -05:00
pg_dump_sort.c Local partitioned indexes 2018-01-19 11:49:22 -03:00
pg_dumpall.c Avoid using unsafe search_path settings during dump and restore. 2018-02-26 10:18:21 -05:00
pg_restore.c Support --no-comments in pg_dump, pg_dumpall, pg_restore. 2018-01-25 15:27:24 -05:00