pgsql: Fix unsafe references to errno within error messaging logic.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix unsafe references to errno within error messaging logic.
Date: 2014-01-30 01:05:07
Message-ID: E1W8g43-0006ZU-1t@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix unsafe references to errno within error messaging logic.

Various places were supposing that errno could be expected to hold still
within an ereport() nest or similar contexts. This isn't true necessarily,
though in some cases it accidentally failed to fail depending on how the
compiler chanced to order the subexpressions. This class of thinko
explains recent reports of odd failures on clang-built versions, typically
missing or inappropriate HINT fields in messages.

Problem identified by Christian Kruse, who also submitted the patch this
commit is based on. (I fixed a few issues in his patch and found a couple
of additional places with the same disease.)

Back-patch as appropriate to all supported branches.

Branch
------
REL8_4_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/01b882fd8468ad019f9dfeb4f7b0d286cc9ffbe5

Modified Files
--------------
src/backend/port/sysv_sema.c | 14 ++++++++++----
src/backend/port/sysv_shmem.c | 19 +++++++++----------
2 files changed, 19 insertions(+), 14 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Bruce Momjian 2014-01-30 14:41:49 pgsql: Add checks for interval overflow/underflow
Previous Message Tom Lane 2014-01-30 01:05:06 pgsql: Fix unsafe references to errno within error messaging logic.