[COMMITTERS] pgsql: Teach libpq to detect integer overflow in the row count of aPGr

Поиск
Список
Период
Сортировка
От Tom Lane
Тема [COMMITTERS] pgsql: Teach libpq to detect integer overflow in the row count of aPGr
Дата
Msg-id E1dmm2F-00087d-02@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Teach libpq to detect integer overflow in the row count of a PGresult.

Adding more than 1 billion rows to a PGresult would overflow its ntups and
tupArrSize fields, leading to client crashes.  It'd be desirable to use
wider fields on 64-bit machines, but because all of libpq's external APIs
use plain "int" for row counters, that's going to be hard to accomplish
without an ABI break.  Given the lack of complaints so far, and the general
pain that would be involved in using such huge PGresults, let's settle for
just preventing the overflow and reporting a useful error message if it
does happen.  Also, for a couple more lines of code we can increase the
threshold of trouble from INT_MAX/2 to INT_MAX rows.

To do that, refactor pqAddTuple() to allow returning an error message that
replaces the default assumption that it failed because of out-of-memory.

Along the way, fix PQsetvalue() so that it reports all failures via
pqInternalNotice().  It already did so in the case of bad field number,
but neglected to report anything for other error causes.

Because of the potential for crashes, this seems like a back-patchable
bug fix, despite the lack of field reports.

Michael Paquier, per a complaint from Igor Korot.

Discussion: https://postgr.es/m/CA+FnnTxyLWyjY1goewmJNxC==HQCCF4fKkoCTa9qR36oRAHDPw@mail.gmail.com

Branch
------
REL9_6_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/bc95e5874ac9bc027d1549677ec4f61b9d36a2a3

Modified Files
--------------
src/interfaces/libpq/fe-exec.c | 69 ++++++++++++++++++++++++++++++++++++------
1 file changed, 60 insertions(+), 9 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: [COMMITTERS] pgsql: Propagate sort instrumentation from workers back to leader.
Следующее
От: Tom Lane
Дата:
Сообщение: [COMMITTERS] pgsql: Teach libpq to detect integer overflow in the row count of aPGr