Обсуждение: BUG #14063: ALTER SYSTEM accepts 'newline' and renders itself inoperable.

Поиск
Список
Период
Сортировка

BUG #14063: ALTER SYSTEM accepts 'newline' and renders itself inoperable.

От
julian.schauder@credativ.de
Дата:
The following bug has been logged on the website:

Bug reference:      14063
Logged by:          Julian Schauder
Email address:      julian.schauder@credativ.de
PostgreSQL version: 9.5.1
Operating system:   Linux, Any
Description:

Howdy Hackers,

PostgreSQLs ALTER SYSTEM accepts a newline in its string-statements. This
will cause the postgresql.auto.conf to become unreadable and requires system
intervention (aka removal of the auto.conf)

postgres=# alter system set work_mem to '5MB
';
ALTER SYSTEM
Time: 37,718 ms
postgres=# alter system set work_mem to '5MB';
ERROR:  could not parse contents of file "postgresql.auto.conf"
Time: 0,453 ms
postgres=# alter system reset work_mem ;
ERROR:  could not parse contents of file "postgresql.auto.conf"
Time: 0,331 ms


According to code analysis i believe the easiest way around this is
tightening the value validation and ignore whitespaces or just remove
newline as a whitespace.

As this appears to be a new bug is relevant in all versions since ALTER
SYSTEM was introduced.


regards,
julian

Re: BUG #14063: ALTER SYSTEM accepts 'newline' and renders itself inoperable.

От
Tom Lane
Дата:
julian.schauder@credativ.de writes:
> PostgreSQLs ALTER SYSTEM accepts a newline in its string-statements. This
> will cause the postgresql.auto.conf to become unreadable and requires system
> intervention (aka removal of the auto.conf)

Yeah, there's no provision for allowing a newline in postgresql.conf
string literals.  I believe we debated this in the past and decided it
wasn't something we wanted to change, as it would create more confusion
than it was worth (for example: what line number to ascribe to such an
assignment).  It looks like newline is the only troublesome character;
there are quoting conventions for backslash and quote, which are the only
other characters that are special there.

> According to code analysis i believe the easiest way around this is
> tightening the value validation and ignore whitespaces or just remove
> newline as a whitespace.

I'm inclined to just throw an error if someone tries this, not try to
clean up after them.  If we get lots of complaints about it, we will know
we should revisit the aforementioned decision.  But there's no reason to
put restrictions on GUC values that aren't getting written by ALTER SYSTEM.

            regards, tom lane