1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-06 19:59:18 +03:00

Update release notes for security-related releases in all active branches.

Security: CVE-2007-0555, CVE-2007-0556
This commit is contained in:
Tom Lane 2007-02-02 00:10:33 +00:00
parent 23326cd18b
commit 40cf433eb6

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.488.2.4 2007/02/01 19:18:14 neilc Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.488.2.5 2007/02/02 00:10:33 tgl Exp $ -->
<!-- <!--
Typical markup: Typical markup:
@ -27,13 +27,167 @@ wrap long lines
For new features, add links to the documentation sections. Use </link> For new features, add links to the documentation sections. Use </link>
so that perl can remove it so HISTORY.html can be created with no so that perl can remove it so HISTORY.html can be created with no
links to the main documentation. links to the main documentation. This was added only in 8.2, so don't
do it for earlier branch release files.
--> -->
<appendix id="release"> <appendix id="release">
<title>Release Notes</title> <title>Release Notes</title>
<sect1 id="release-8-2-2">
<title>Release 8.2.2</title>
<note>
<title>Release date</title>
<simpara>2007-02-05</simpara>
</note>
<para>
This release contains a variety of fixes from 8.2.1, including
a security fix.
</para>
<sect2>
<title>Migration to version 8.2.2</title>
<para>
A dump/restore is not required for those running 8.2.X.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<para>
Remove security vulnerabilities that allowed connected users
to read backend memory (Tom)
</para>
<para>
The vulnerabilities involve suppressing the normal check that a SQL
function returns the data type it's declared to, and changing the
data type of a table column (CVE-2007-0555, CVE-2007-0556). These
errors can easily be exploited to cause a backend crash, and in
principle might be used to read database content that the user
should not be able to access.
</para>
</listitem>
<listitem>
<para>
Fix not-so-rare-anymore bug wherein btree index page splits could fail
due to choosing an infeasible split point (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Fix Borland C compile scripts (L Bayuk)
</para>
</listitem>
<listitem>
<para>
Properly handle <function>to_char('CC')</> for years ending in
<literal>00</> (Tom)
</para>
<para>
Year 2000 is in the twentieth century, not the twenty-first.
</para>
</listitem>
<listitem>
<para>
<filename>/contrib/tsearch2</> localization improvements (Tatsuo, Teodor)
</para>
</listitem>
<listitem>
<para>
Fix incorrect permission check in
<literal>information_schema.key_column_usage</> view (Tom)
</para>
<para>
The symptom is <quote>relation with OID nnnnn does not exist</> errors.
To get this fix without using <command>initdb</>, use <command>CREATE OR
REPLACE VIEW</> to install the corrected definition found in
<filename>share/information_schema.sql</>. Note you will need to do
this in each database.
</para>
</listitem>
<listitem>
<para>
Improve <command>VACUUM</> performance for databases with many tables (Tom)
</para>
</listitem>
<listitem>
<para>
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
</para>
</listitem>
<listitem>
<para>
Fix potentially incorrect results from index searches using
<literal>ROW</> inequality conditions (Tom)
</para>
</listitem>
<listitem>
<para>
Tighten security of multi-byte character processing for UTF8 sequences
over three bytes long (Tom)
</para>
</listitem>
<listitem>
<para>
Fix bogus <quote>permission denied</> failures occurring on Windows
due to attempts to fsync already-deleted files (Magnus, Tom)
</para>
</listitem>
<listitem>
<para>
Fix bug that could cause the statistics collector
to hang on Windows (Magnus)
</para>
<para>
This would in turn lead to autovacuum not working.
</para>
</listitem>
<listitem>
<para>
Fix possible crashes when an already-in-use PL/pgSQL function is
updated (Tom)
</para>
</listitem>
<listitem>
<para>
Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom)
</para>
</listitem>
<listitem>
<para>
Fix possible errors in processing PL/pgSQL exception blocks (Tom)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-8-2-1"> <sect1 id="release-8-2-1">
<title>Release 8.2.1</title> <title>Release 8.2.1</title>
@ -503,7 +657,7 @@ links to the main documentation.
</para> </para>
<para> <para>
This may eliminate the need to set unrealistically small This might eliminate the need to set unrealistically small
values of <link values of <link
linkend="guc-random-page-cost"><varname>random_page_cost</></link>. linkend="guc-random-page-cost"><varname>random_page_cost</></link>.
If you have been using a very small <varname>random_page_cost</>, If you have been using a very small <varname>random_page_cost</>,
@ -998,7 +1152,7 @@ links to the main documentation.
<para> <para>
On platforms where it is expensive to update the <application>ps</> On platforms where it is expensive to update the <application>ps</>
display, it may be worthwhile to turn this off and rely solely on display, it might be worthwhile to turn this off and rely solely on
<structname>pg_stat_activity</> for status information. <structname>pg_stat_activity</> for status information.
</para> </para>
</listitem> </listitem>
@ -1279,7 +1433,7 @@ links to the main documentation.
<para> <para>
This prevents surprising behavior due to multiple evaluation This prevents surprising behavior due to multiple evaluation
of a <literal>volatile</> function (such as <function>random()</> of a <literal>volatile</> function (such as <function>random()</>
or <function>nextval()</>). It may cause performance or <function>nextval()</>). It might cause performance
degradation in the presence of functions that are unnecessarily degradation in the presence of functions that are unnecessarily
marked as <literal>volatile</>. marked as <literal>volatile</>.
</para> </para>
@ -2726,6 +2880,106 @@ links to the main documentation.
</sect2> </sect2>
</sect1> </sect1>
<sect1 id="release-8-1-7">
<title>Release 8.1.7</title>
<note>
<title>Release date</title>
<simpara>2007-02-05</simpara>
</note>
<para>
This release contains a variety of fixes from 8.1.6, including
a security fix.
</para>
<sect2>
<title>Migration to version 8.1.7</title>
<para>
A dump/restore is not required for those running 8.1.X.
However, if you are upgrading from a version earlier than 8.1.2,
see the release notes for 8.1.2.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<para>
Remove security vulnerabilities that allowed connected users
to read backend memory (Tom)
</para>
<para>
The vulnerabilities involve suppressing the normal check that a SQL
function returns the data type it's declared to, and changing the
data type of a table column (CVE-2007-0555, CVE-2007-0556). These
errors can easily be exploited to cause a backend crash, and in
principle might be used to read database content that the user
should not be able to access.
</para>
</listitem>
<listitem>
<para>
Fix rare bug wherein btree index page splits could fail
due to choosing an infeasible split point (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Improve <command>VACUUM</> performance for databases with many tables (Tom)
</para>
</listitem>
<listitem>
<para>
Fix autovacuum to avoid leaving non-permanent transaction IDs in
non-connectable databases (Alvaro)
</para>
<para>
This bug affects the 8.1 branch only.
</para>
</listitem>
<listitem>
<para>
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
</para>
</listitem>
<listitem>
<para>
Tighten security of multi-byte character processing for UTF8 sequences
over three bytes long (Tom)
</para>
</listitem>
<listitem>
<para>
Fix bogus <quote>permission denied</> failures occurring on Windows
due to attempts to fsync already-deleted files (Magnus, Tom)
</para>
</listitem>
<listitem>
<para>
Fix possible crashes when an already-in-use PL/pgSQL function is
updated (Tom)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-8-1-6"> <sect1 id="release-8-1-6">
<title>Release 8.1.6</title> <title>Release 8.1.6</title>
@ -2975,7 +3229,7 @@ compilers (Hiroshi Saito)</para></listitem>
<para> <para>
Full security against the SQL-injection attacks described in Full security against the SQL-injection attacks described in
CVE-2006-2313 and CVE-2006-2314 may require changes in application CVE-2006-2313 and CVE-2006-2314 might require changes in application
code. If you have applications that embed untrustworthy strings code. If you have applications that embed untrustworthy strings
into SQL commands, you should examine them as soon as possible to into SQL commands, you should examine them as soon as possible to
ensure that they are using recommended escaping techniques. In ensure that they are using recommended escaping techniques. In
@ -3007,7 +3261,7 @@ literals. By default, <literal>\'</> is rejected only when
GB18030, or UHC), which is the scenario in which SQL injection is possible. GB18030, or UHC), which is the scenario in which SQL injection is possible.
A new configuration parameter <varname>backslash_quote</> is available to A new configuration parameter <varname>backslash_quote</> is available to
adjust this behavior when needed. Note that full security against adjust this behavior when needed. Note that full security against
CVE-2006-2314 may require client-side changes; the purpose of CVE-2006-2314 might require client-side changes; the purpose of
<varname>backslash_quote</> is in part to make it obvious that insecure <varname>backslash_quote</> is in part to make it obvious that insecure
clients are insecure. clients are insecure.
</para></listitem> </para></listitem>
@ -3274,7 +3528,7 @@ to ensure that <application>plperl</> won't change the locale later</para>
<para>This fixes a problem that occurred if the <application>postmaster</> was <para>This fixes a problem that occurred if the <application>postmaster</> was
started with environment variables specifying a different locale than what started with environment variables specifying a different locale than what
<application>initdb</> had been told. Under these conditions, any use of <application>initdb</> had been told. Under these conditions, any use of
<application>plperl</> was likely to lead to corrupt indexes. You may need <application>plperl</> was likely to lead to corrupt indexes. You might need
<command>REINDEX</> to fix existing indexes on <command>REINDEX</> to fix existing indexes on
textual columns if this has happened to you.</para></listitem> textual columns if this has happened to you.</para></listitem>
@ -3672,7 +3926,7 @@ DISTINCT query</para></listitem>
</para> </para>
<para> <para>
It may be necessary to set <varname>add_missing_from</> to true It might be necessary to set <varname>add_missing_from</> to true
in order to load an existing dump file, if the dump contains any in order to load an existing dump file, if the dump contains any
views or rules created using the implicit-<literal>FROM</> syntax. views or rules created using the implicit-<literal>FROM</> syntax.
This should be a one-time annoyance, because This should be a one-time annoyance, because
@ -3894,7 +4148,7 @@ psql -t -f fixseq.sql db1 | psql -e db1
<listitem> <listitem>
<para> <para>
<command>CREATE LANGUAGE</> may ignore the provided arguments <command>CREATE LANGUAGE</> can ignore the provided arguments
in favor of information from <structname>pg_pltemplate</> in favor of information from <structname>pg_pltemplate</>
(Tom) (Tom)
</para> </para>
@ -5536,6 +5790,75 @@ psql -t -f fixseq.sql db1 | psql -e db1
</sect2> </sect2>
</sect1> </sect1>
<sect1 id="release-8-0-11">
<title>Release 8.0.11</title>
<note>
<title>Release date</title>
<simpara>2007-02-05</simpara>
</note>
<para>
This release contains a variety of fixes from 8.0.10, including
a security fix.
</para>
<sect2>
<title>Migration to version 8.0.11</title>
<para>
A dump/restore is not required for those running 8.0.X. However,
if you are upgrading from a version earlier than 8.0.6, see the release
notes for 8.0.6.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<para>
Remove security vulnerabilities that allowed connected users
to read backend memory (Tom)
</para>
<para>
The vulnerabilities involve suppressing the normal check that a SQL
function returns the data type it's declared to, and changing the
data type of a table column (CVE-2007-0555, CVE-2007-0556). These
errors can easily be exploited to cause a backend crash, and in
principle might be used to read database content that the user
should not be able to access.
</para>
</listitem>
<listitem>
<para>
Fix rare bug wherein btree index page splits could fail
due to choosing an infeasible split point (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
</para>
</listitem>
<listitem>
<para>
Tighten security of multi-byte character processing for UTF8 sequences
over three bytes long (Tom)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-8-0-10"> <sect1 id="release-8-0-10">
<title>Release 8.0.10</title> <title>Release 8.0.10</title>
@ -5733,7 +6056,7 @@ Wieland)</para></listitem>
<para> <para>
Full security against the SQL-injection attacks described in Full security against the SQL-injection attacks described in
CVE-2006-2313 and CVE-2006-2314 may require changes in application CVE-2006-2313 and CVE-2006-2314 might require changes in application
code. If you have applications that embed untrustworthy strings code. If you have applications that embed untrustworthy strings
into SQL commands, you should examine them as soon as possible to into SQL commands, you should examine them as soon as possible to
ensure that they are using recommended escaping techniques. In ensure that they are using recommended escaping techniques. In
@ -5765,7 +6088,7 @@ literals. By default, <literal>\'</> is rejected only when
GB18030, or UHC), which is the scenario in which SQL injection is possible. GB18030, or UHC), which is the scenario in which SQL injection is possible.
A new configuration parameter <varname>backslash_quote</> is available to A new configuration parameter <varname>backslash_quote</> is available to
adjust this behavior when needed. Note that full security against adjust this behavior when needed. Note that full security against
CVE-2006-2314 may require client-side changes; the purpose of CVE-2006-2314 might require client-side changes; the purpose of
<varname>backslash_quote</> is in part to make it obvious that insecure <varname>backslash_quote</> is in part to make it obvious that insecure
clients are insecure. clients are insecure.
</para></listitem> </para></listitem>
@ -5971,7 +6294,7 @@ to ensure that <application>plperl</> won't change the locale later</para>
<para>This fixes a problem that occurred if the <application>postmaster</> was <para>This fixes a problem that occurred if the <application>postmaster</> was
started with environment variables specifying a different locale than what started with environment variables specifying a different locale than what
<application>initdb</> had been told. Under these conditions, any use of <application>initdb</> had been told. Under these conditions, any use of
<application>plperl</> was likely to lead to corrupt indexes. You may need <application>plperl</> was likely to lead to corrupt indexes. You might need
<command>REINDEX</> to fix existing indexes on <command>REINDEX</> to fix existing indexes on
textual columns if this has happened to you.</para></listitem> textual columns if this has happened to you.</para></listitem>
@ -6222,7 +6545,7 @@ code</para></listitem>
It is strongly recommended that all installations repair these errors, It is strongly recommended that all installations repair these errors,
either by initdb or by following the manual repair procedure given either by initdb or by following the manual repair procedure given
below. The errors at least allow unprivileged database users to crash below. The errors at least allow unprivileged database users to crash
their server process, and may allow unprivileged users to gain the their server process, and might allow unprivileged users to gain the
privileges of a database superuser. privileges of a database superuser.
</para> </para>
@ -6891,8 +7214,7 @@ typedefs (Michael)</para></listitem>
behavior across all platforms. In most cases, there should be behavior across all platforms. In most cases, there should be
little noticeable difference in time zone behavior, except that little noticeable difference in time zone behavior, except that
the time zone names used by <command>SET</>/<command>SHOW</> the time zone names used by <command>SET</>/<command>SHOW</>
<varname>TimeZone</> may <varname>TimeZone</> might be different from what your platform provides.
be different from what your platform provides.
</para> </para>
</listitem> </listitem>
@ -7321,7 +7643,7 @@ typedefs (Michael)</para></listitem>
Some logging-related configuration parameters could formerly be adjusted Some logging-related configuration parameters could formerly be adjusted
by ordinary users, but only in the <quote>more verbose</> direction. by ordinary users, but only in the <quote>more verbose</> direction.
They are now treated more strictly: only superusers can set them. They are now treated more strictly: only superusers can set them.
However, a superuser may use <command>ALTER USER</> to provide per-user However, a superuser can use <command>ALTER USER</> to provide per-user
settings of these values for non-superusers. Also, it is now possible settings of these values for non-superusers. Also, it is now possible
for superusers to set values of superuser-only configuration parameters for superusers to set values of superuser-only configuration parameters
via <literal>PGOPTIONS</>. via <literal>PGOPTIONS</>.
@ -8862,6 +9184,75 @@ typedefs (Michael)</para></listitem>
</sect2> </sect2>
</sect1> </sect1>
<sect1 id="release-7-4-16">
<title>Release 7.4.16</title>
<note>
<title>Release date</title>
<simpara>2007-02-05</simpara>
</note>
<para>
This release contains a variety of fixes from 7.4.15, including
a security fix.
</para>
<sect2>
<title>Migration to version 7.4.16</title>
<para>
A dump/restore is not required for those running 7.4.X. However,
if you are upgrading from a version earlier than 7.4.11, see the release
notes for 7.4.11.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<para>
Remove security vulnerability that allowed connected users
to read backend memory (Tom)
</para>
<para>
The vulnerability involves suppressing the normal check that a SQL
function returns the data type it's declared to, or changing the
data type of a table column used in a SQL function (CVE-2007-0555).
This error can easily be exploited to cause a backend crash, and in
principle might be used to read database content that the user
should not be able to access.
</para>
</listitem>
<listitem>
<para>
Fix rare bug wherein btree index page splits could fail
due to choosing an infeasible split point (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
</para>
</listitem>
<listitem>
<para>
Tighten security of multi-byte character processing for UTF8 sequences
over three bytes long (Tom)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-7-4-15"> <sect1 id="release-7-4-15">
<title>Release 7.4.15</title> <title>Release 7.4.15</title>
@ -9020,7 +9411,7 @@ ANYARRAY</para></listitem>
<para> <para>
Full security against the SQL-injection attacks described in Full security against the SQL-injection attacks described in
CVE-2006-2313 and CVE-2006-2314 may require changes in application CVE-2006-2313 and CVE-2006-2314 might require changes in application
code. If you have applications that embed untrustworthy strings code. If you have applications that embed untrustworthy strings
into SQL commands, you should examine them as soon as possible to into SQL commands, you should examine them as soon as possible to
ensure that they are using recommended escaping techniques. In ensure that they are using recommended escaping techniques. In
@ -9052,7 +9443,7 @@ literals. By default, <literal>\'</> is rejected only when
GB18030, or UHC), which is the scenario in which SQL injection is possible. GB18030, or UHC), which is the scenario in which SQL injection is possible.
A new configuration parameter <varname>backslash_quote</> is available to A new configuration parameter <varname>backslash_quote</> is available to
adjust this behavior when needed. Note that full security against adjust this behavior when needed. Note that full security against
CVE-2006-2314 may require client-side changes; the purpose of CVE-2006-2314 might require client-side changes; the purpose of
<varname>backslash_quote</> is in part to make it obvious that insecure <varname>backslash_quote</> is in part to make it obvious that insecure
clients are insecure. clients are insecure.
</para></listitem> </para></listitem>
@ -9205,7 +9596,7 @@ to ensure that <application>plperl</> won't change the locale later</para>
<para>This fixes a problem that occurred if the <application>postmaster</> was <para>This fixes a problem that occurred if the <application>postmaster</> was
started with environment variables specifying a different locale than what started with environment variables specifying a different locale than what
<application>initdb</> had been told. Under these conditions, any use of <application>initdb</> had been told. Under these conditions, any use of
<application>plperl</> was likely to lead to corrupt indexes. You may need <application>plperl</> was likely to lead to corrupt indexes. You might need
<command>REINDEX</> to fix existing indexes on <command>REINDEX</> to fix existing indexes on
textual columns if this has happened to you.</para></listitem> textual columns if this has happened to you.</para></listitem>
@ -9391,7 +9782,7 @@ code</para></listitem>
It is strongly recommended that all installations repair these errors, It is strongly recommended that all installations repair these errors,
either by initdb or by following the manual repair procedures given either by initdb or by following the manual repair procedures given
below. The errors at least allow unprivileged database users to crash below. The errors at least allow unprivileged database users to crash
their server process, and may allow unprivileged users to gain the their server process, and might allow unprivileged users to gain the
privileges of a database superuser. privileges of a database superuser.
</para> </para>
@ -9409,7 +9800,7 @@ WHERE pronamespace = 11 AND pronargs = 5
COMMIT; COMMIT;
</programlisting> </programlisting>
Next, if you have installed <filename>contrib/tsearch2</>, do Next, if you have installed <filename>contrib/tsearch2</>, do:
<programlisting> <programlisting>
BEGIN; BEGIN;
@ -9438,12 +9829,12 @@ COMMIT;
template databases then any subsequently created databases will contain template databases then any subsequently created databases will contain
the same errors. <literal>template1</> can be fixed in the same way the same errors. <literal>template1</> can be fixed in the same way
as any other database, but fixing <literal>template0</> requires as any other database, but fixing <literal>template0</> requires
additional steps. First, from any database issue additional steps. First, from any database issue:
<programlisting> <programlisting>
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
</programlisting> </programlisting>
Next connect to <literal>template0</> and perform the above repair Next connect to <literal>template0</> and perform the above repair
procedures. Finally, do procedures. Finally, do:
<programlisting> <programlisting>
-- re-freeze template0: -- re-freeze template0:
VACUUM FREEZE; VACUUM FREEZE;
@ -9815,7 +10206,7 @@ names from outer query levels.
<para> <para>
A dump/restore is not required for those running 7.4.X. However, A dump/restore is not required for those running 7.4.X. However,
it may be advisable as the easiest method of incorporating fixes for it might be advisable as the easiest method of incorporating fixes for
two errors that have been found in the initial contents of 7.4.X system two errors that have been found in the initial contents of 7.4.X system
catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will
automatically correct these problems. automatically correct these problems.
@ -9881,12 +10272,12 @@ GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
template databases then any subsequently created databases will contain template databases then any subsequently created databases will contain
the same errors. <literal>template1</> can be fixed in the same way the same errors. <literal>template1</> can be fixed in the same way
as any other database, but fixing <literal>template0</> requires as any other database, but fixing <literal>template0</> requires
additional steps. First, from any database issue additional steps. First, from any database issue:
<programlisting> <programlisting>
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
</programlisting> </programlisting>
Next connect to <literal>template0</> and perform the above repair Next connect to <literal>template0</> and perform the above repair
procedures. Finally, do procedures. Finally, do:
<programlisting> <programlisting>
-- re-freeze template0: -- re-freeze template0:
VACUUM FREEZE; VACUUM FREEZE;
@ -10369,7 +10760,7 @@ DROP SCHEMA information_schema CASCADE;
<listitem> <listitem>
<para> <para>
Inner joins using the explicit <literal>JOIN</literal> syntax Inner joins using the explicit <literal>JOIN</literal> syntax
may behave differently because they are now better might behave differently because they are now better
optimized. optimized.
</para> </para>
</listitem> </listitem>
@ -11336,7 +11727,7 @@ DROP SCHEMA information_schema CASCADE;
<listitem> <listitem>
<para> <para>
Arrays may now be specified as <literal>ARRAY[1,2,3]</literal>, Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
<literal>ARRAY[['a','b'],['c','d']]</literal>, or <literal>ARRAY[['a','b'],['c','d']]</literal>, or
<literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe) <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
</para> </para>
@ -11910,6 +12301,68 @@ DROP SCHEMA information_schema CASCADE;
</sect2> </sect2>
</sect1> </sect1>
<sect1 id="release-7-3-18">
<title>Release 7.3.18</title>
<note>
<title>Release date</title>
<simpara>2007-02-05</simpara>
</note>
<para>
This release contains a variety of fixes from 7.3.17, including
a security fix.
</para>
<sect2>
<title>Migration to version 7.3.18</title>
<para>
A dump/restore is not required for those running 7.3.X. However,
if you are upgrading from a version earlier than 7.3.13, see the release
notes for 7.3.13.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<para>
Remove security vulnerability that allowed connected users
to read backend memory (Tom)
</para>
<para>
The vulnerability involves changing the
data type of a table column used in a SQL function (CVE-2007-0555).
This error can easily be exploited to cause a backend crash, and in
principle might be used to read database content that the user
should not be able to access.
</para>
</listitem>
<listitem>
<para>
Fix rare bug wherein btree index page splits could fail
due to choosing an infeasible split point (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<para>
Tighten security of multi-byte character processing for UTF8 sequences
over three bytes long (Tom)
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-7-3-17"> <sect1 id="release-7-3-17">
<title>Release 7.3.17</title> <title>Release 7.3.17</title>
@ -12034,7 +12487,7 @@ DROP SCHEMA information_schema CASCADE;
<para> <para>
Full security against the SQL-injection attacks described in Full security against the SQL-injection attacks described in
CVE-2006-2313 and CVE-2006-2314 may require changes in application CVE-2006-2313 and CVE-2006-2314 might require changes in application
code. If you have applications that embed untrustworthy strings code. If you have applications that embed untrustworthy strings
into SQL commands, you should examine them as soon as possible to into SQL commands, you should examine them as soon as possible to
ensure that they are using recommended escaping techniques. In ensure that they are using recommended escaping techniques. In
@ -12066,7 +12519,7 @@ literals. By default, <literal>\'</> is rejected only when
GB18030, or UHC), which is the scenario in which SQL injection is possible. GB18030, or UHC), which is the scenario in which SQL injection is possible.
A new configuration parameter <varname>backslash_quote</> is available to A new configuration parameter <varname>backslash_quote</> is available to
adjust this behavior when needed. Note that full security against adjust this behavior when needed. Note that full security against
CVE-2006-2314 may require client-side changes; the purpose of CVE-2006-2314 might require client-side changes; the purpose of
<varname>backslash_quote</> is in part to make it obvious that insecure <varname>backslash_quote</> is in part to make it obvious that insecure
clients are insecure. clients are insecure.
</para></listitem> </para></listitem>
@ -12199,7 +12652,7 @@ to ensure that <application>plperl</> won't change the locale later</para>
<para>This fixes a problem that occurred if the <application>postmaster</> was <para>This fixes a problem that occurred if the <application>postmaster</> was
started with environment variables specifying a different locale than what started with environment variables specifying a different locale than what
<application>initdb</> had been told. Under these conditions, any use of <application>initdb</> had been told. Under these conditions, any use of
<application>plperl</> was likely to lead to corrupt indexes. You may need <application>plperl</> was likely to lead to corrupt indexes. You might need
<command>REINDEX</> to fix existing indexes on <command>REINDEX</> to fix existing indexes on
textual columns if this has happened to you.</para></listitem> textual columns if this has happened to you.</para></listitem>
@ -12354,7 +12807,7 @@ the variable is of pass-by-reference type</para></listitem>
It is strongly recommended that all installations repair this error, It is strongly recommended that all installations repair this error,
either by initdb or by following the manual repair procedure given either by initdb or by following the manual repair procedure given
below. The error at least allows unprivileged database users to crash below. The error at least allows unprivileged database users to crash
their server process, and may allow unprivileged users to gain the their server process, and might allow unprivileged users to gain the
privileges of a database superuser. privileges of a database superuser.
</para> </para>
@ -12380,12 +12833,12 @@ COMMIT;
template databases then any subsequently created databases will contain template databases then any subsequently created databases will contain
the same error. <literal>template1</> can be fixed in the same way the same error. <literal>template1</> can be fixed in the same way
as any other database, but fixing <literal>template0</> requires as any other database, but fixing <literal>template0</> requires
additional steps. First, from any database issue additional steps. First, from any database issue:
<programlisting> <programlisting>
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
</programlisting> </programlisting>
Next connect to <literal>template0</> and perform the above repair Next connect to <literal>template0</> and perform the above repair
procedure. Finally, do procedure. Finally, do:
<programlisting> <programlisting>
-- re-freeze template0: -- re-freeze template0:
VACUUM FREEZE; VACUUM FREEZE;
@ -12938,7 +13391,7 @@ operations on bytea columns (Joe)</para></listitem>
A dump/restore is <emphasis>not</emphasis> required for those A dump/restore is <emphasis>not</emphasis> required for those
running version 7.3. However, it should be noted that the main running version 7.3. However, it should be noted that the main
<productname>PostgreSQL</productname> interface library, libpq, <productname>PostgreSQL</productname> interface library, libpq,
has a new major version number for this release, which may require has a new major version number for this release, which might require
recompilation of client code in certain cases. recompilation of client code in certain cases.
</para> </para>
</sect2> </sect2>
@ -13174,7 +13627,7 @@ operations on bytea columns (Joe)</para></listitem>
<para> <para>
<command>COPY</command> no longer considers missing trailing <command>COPY</command> no longer considers missing trailing
columns to be null. All columns need to be specified. columns to be null. All columns need to be specified.
(However, one may achieve a similar effect by specifying a (However, one can achieve a similar effect by specifying a
column list in the <command>COPY</command> command.) column list in the <command>COPY</command> command.)
</para> </para>
</listitem> </listitem>
@ -14075,7 +14528,7 @@ since <productname>PostgreSQL</productname> 7.1.
<listitem> <listitem>
<para> <para>
The semantics of the <command>VACUUM</command> command have The semantics of the <command>VACUUM</command> command have
changed in this release. You may wish to update your changed in this release. You might wish to update your
maintenance procedures accordingly. maintenance procedures accordingly.
</para> </para>
</listitem> </listitem>
@ -14670,7 +15123,7 @@ previous releases of <productname>PostgreSQL</productname> have forced
all data modifications to disk before each transaction commit. With all data modifications to disk before each transaction commit. With
WAL, only one log file must be flushed to disk, greatly improving WAL, only one log file must be flushed to disk, greatly improving
performance. If you have been using -F in previous releases to performance. If you have been using -F in previous releases to
disable disk flushes, you may want to consider discontinuing its use. disable disk flushes, you might want to consider discontinuing its use.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -14711,7 +15164,7 @@ outer join syntax.
The previous C function manager did not The previous C function manager did not
handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new
function manager does. You can continue using your old custom function manager does. You can continue using your old custom
functions, but you may want to rewrite them in the future to use the new functions, but you might want to rewrite them in the future to use the new
function manager call interface. function manager call interface.
</para> </para>
</listitem> </listitem>
@ -15184,7 +15637,7 @@ ecpg changes (Michael)
A dump/restore using <application>pg_dump</application> A dump/restore using <application>pg_dump</application>
is required for those wishing to migrate data from any is required for those wishing to migrate data from any
previous release of <productname>PostgreSQL</productname>. previous release of <productname>PostgreSQL</productname>.
For those upgrading from 6.5.*, you may instead use For those upgrading from 6.5.*, you can instead use
<application>pg_upgrade</application> to upgrade to this <application>pg_upgrade</application> to upgrade to this
release; however, a full dump/reload installation is always the release; however, a full dump/reload installation is always the
most robust method for upgrades. most robust method for upgrades.
@ -15205,7 +15658,7 @@ ecpg changes (Michael)
ease the transition by allowing ease the transition by allowing
<productname>PostgreSQL</productname> to recognize <productname>PostgreSQL</productname> to recognize
the deprecated type names and translate them to the new type the deprecated type names and translate them to the new type
names, this mechanism may not be completely transparent to names, this mechanism cannot be completely transparent to
your existing application. your existing application.
</para> </para>
</listitem> </listitem>
@ -15217,8 +15670,8 @@ ecpg changes (Michael)
decreased query times as the optimizer makes a better choice decreased query times as the optimizer makes a better choice
for the preferred plan. However, in a small number of cases, for the preferred plan. However, in a small number of cases,
usually involving pathological distributions of data, your usually involving pathological distributions of data, your
query times may go up. If you are dealing with large amounts query times might go up. If you are dealing with large amounts
of data, you may want to check your queries to verify of data, you might want to check your queries to verify
performance. performance.
</para> </para>
</listitem> </listitem>
@ -16382,7 +16835,7 @@ Jdbc cleanups(Peter)
Show backend status on ps command line(only works on some platforms)(Bruce) Show backend status on ps command line(only works on some platforms)(Bruce)
Pg_hba.conf now has a sameuser option in the database field Pg_hba.conf now has a sameuser option in the database field
Make lo_unlink take oid param, not int4 Make lo_unlink take oid param, not int4
New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce) New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce)
Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom) Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
libpgtcl cleanups(Tom) libpgtcl cleanups(Tom)
Add -error option to libpgtcl's pg_result command(Tom) Add -error option to libpgtcl's pg_result command(Tom)
@ -16699,7 +17152,7 @@ Better identify tcl and tk libs and includes(Bruce)
<listitem> <listitem>
<para> <para>
Socket interface for client/server connection. This is the default now Socket interface for client/server connection. This is the default now
so you may need to start <application>postmaster</application> with the so you might need to start <application>postmaster</application> with the
<option>-i</option> flag. <option>-i</option> flag.
</para> </para>
</listitem> </listitem>
@ -16735,9 +17188,9 @@ Better identify tcl and tk libs and includes(Bruce)
mention that without subselects, SQL is a very limited language. mention that without subselects, SQL is a very limited language.
Subselects are a major feature, and you should review your code for Subselects are a major feature, and you should review your code for
places where subselects provide a better solution for your queries. I places where subselects provide a better solution for your queries. I
think you will find that there are more uses for subselects than you may think you will find that there are more uses for subselects than you might
think. Vadim has put us on the big SQL map with subselects, and fully think. Vadim has put us on the big SQL map with subselects, and fully
functional ones too. The only thing you can't do with subselects is to functional ones too. The only thing you cannot do with subselects is to
use them in the target list. use them in the target list.
</para> </para>
<para> <para>
@ -16750,7 +17203,7 @@ Better identify tcl and tk libs and includes(Bruce)
Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
<type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
any columns after the first column of this type. <type>char()</type> used to also any columns after the first column of this type. <type>char()</type> used to also
have this access penalty, but it no longer does. This may suggest that have this access penalty, but it no longer does. This might suggest that
you redesign some of your tables, especially if you have short character you redesign some of your tables, especially if you have short character
columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other
changes make 6.3 even faster than earlier releases. changes make 6.3 even faster than earlier releases.
@ -17299,7 +17752,7 @@ optimizer which uses <firstterm>genetic</firstterm>
The interpretation of array specifiers (the curly braces around atomic The interpretation of array specifiers (the curly braces around atomic
values) appears to have changed sometime after the original regression values) appears to have changed sometime after the original regression
tests were generated. The current <filename>./expected/*.out</filename> files reflect this tests were generated. The current <filename>./expected/*.out</filename> files reflect this
new interpretation, which may not be correct! new interpretation, which might not be correct!
</para> </para>
<para> <para>
@ -17787,7 +18240,7 @@ If you do, you must create a file name <literal>pg_hba</literal> in your top-lev
<step> <step>
<para> <para>
If you do not want host-based authentication, you can comment out If you do not want host-based authentication, you can comment out
the line the line:
<programlisting> <programlisting>
HBA = 1 HBA = 1
</programlisting> </programlisting>
@ -18013,7 +18466,7 @@ Incompatible changes:
* float literals (eg. 3.14) are now of type float4 (instead of float8 in * float literals (eg. 3.14) are now of type float4 (instead of float8 in
previous releases); you might have to do typecasting if you depend on it previous releases); you might have to do typecasting if you depend on it
being of type float8. If you neglect to do the typecasting and you assign being of type float8. If you neglect to do the typecasting and you assign
a float literal to a field of type float8, you may get incorrect values a float literal to a field of type float8, you might get incorrect values
stored! stored!
* LIBPQ has been totally revamped so that frontend applications * LIBPQ has been totally revamped so that frontend applications
can connect to multiple backends can connect to multiple backends