pgsql: Fix integer-overflow edge case detection in interval_mul and pgb

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix integer-overflow edge case detection in interval_mul and pgb
Date: 2019-11-07 16:23:20
Message-ID: E1iSkZ6-0005R4-Bu@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix integer-overflow edge case detection in interval_mul and pgbench.

This patch adopts the overflow check logic introduced by commit cbdb8b4c0
into two more places. interval_mul() failed to notice if it computed a
new microseconds value that was one more than INT64_MAX, and pgbench's
double-to-int64 logic had the same sorts of edge-case problems that
cbdb8b4c0 fixed in the core code.

To make this easier to get right in future, put the guts of the checks
into new macros in c.h, and add commentary about how to use the macros
correctly.

Back-patch to all supported branches, as we did with the previous fix.

Yuya Watari

Discussion: https://postgr.es/m/CAJ2pMkbkkFw2hb9Qb1Zj8d06EhWAQXFLy73St4qWv6aX=vqnjw@mail.gmail.com

Branch
------
REL9_6_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/15783d057543edde84b537815a8f22cf99d4beaa

Modified Files
--------------
src/backend/utils/adt/float.c | 44 +++++++---------------------------
src/backend/utils/adt/int8.c | 22 ++++-------------
src/backend/utils/adt/timestamp.c | 2 +-
src/bin/pgbench/pgbench.c | 5 ++--
src/include/c.h | 24 +++++++++++++++++++
src/test/regress/expected/interval.out | 3 +++
src/test/regress/sql/interval.sql | 3 +++
7 files changed, 46 insertions(+), 57 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Fujii Masao 2019-11-07 17:10:05 Re: pgsql: doc: Further clarify how recovery target parameters are applied
Previous Message Peter Eisentraut 2019-11-07 15:23:25 Re: pgsql: doc: Further clarify how recovery target parameters are applied