pgsql: Reject, in pg_dumpall, names containing CR or LF. - Mailing list pgsql-committers

From Noah Misch
Subject pgsql: Reject, in pg_dumpall, names containing CR or LF.
Date
Msg-id E1bWlGS-0006oR-HR@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Reject, in pg_dumpall, names containing CR or LF.

These characters prematurely terminate Windows shell command processing,
causing the shell to execute a prefix of the intended command.  The
chief alternative to rejecting these characters was to bypass the
Windows shell with CreateProcess(), but the ability to use such names
has little value.  Back-patch to 9.1 (all supported versions).

This change formally revokes support for these characters in database
names and roles names.  Don't document this; the error message is
self-explanatory, and too few users would benefit.  A future major
release may forbid creation of databases and roles so named.  For now,
check only at known weak points in pg_dumpall.  Future commits will,
without notice, reject affected names from other frontend programs.

Also extend the restriction to pg_dumpall --dbname=CONNSTR arguments and
--file arguments.  Unlike the effects on role name arguments and
database names, this does not reflect a broad policy change.  A
migration to CreateProcess() could lift these two restrictions.

Reviewed by Peter Eisentraut.

Security: CVE-2016-5424

Branch
------
REL9_3_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/0f679d2c1cb0ef5fc43133ebebf489b82b929214

Modified Files
--------------
src/bin/pg_dump/pg_dumpall.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)


pgsql-committers by date:

Previous
From: Noah Misch
Date:
Subject: pgsql: Promote pg_dumpall shell/connstr quoting functions to src/fe_uti
Next
From: Noah Misch
Date:
Subject: pgsql: Sort out paired double quotes in \connect, \password and \crosst