pgsql: Fix integer-overflow edge case detection in interval_mul and pgb
От | Tom Lane |
---|---|
Тема | pgsql: Fix integer-overflow edge case detection in interval_mul and pgb |
Дата | |
Msg-id | E1iSkZ6-0005R0-AZ@gemulon.postgresql.org обсуждение исходный текст |
Список | 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 ------ REL_11_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/b49b7f94489a12d0d7d299b2871c4881fa3c5d49 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 | 4 ++-- src/include/c.h | 24 +++++++++++++++++++ src/test/regress/expected/interval.out | 3 +++ src/test/regress/sql/interval.sql | 3 +++ 7 files changed, 45 insertions(+), 57 deletions(-)
В списке pgsql-committers по дате отправления: