pgsql: Guard against rare RAND_bytes() failures in pg_strong_random().

Поиск
Список
Период
Сортировка
От Dean Rasheed
Тема pgsql: Guard against rare RAND_bytes() failures in pg_strong_random().
Дата
Msg-id E1fgQWZ-0004jr-6e@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Guard against rare RAND_bytes() failures in pg_strong_random().

When built using OpenSSL, pg_strong_random() uses RAND_bytes() to
generate the random number. On very rare occasions that can fail, if
its PRNG has not been seeded with enough data. Additionally, once it
does fail, all subsequent calls will also fail until more seed data is
added. Since this is required during backend startup, this can result
in all new backends failing to start until a postmaster restart.

Guard against that by checking the state of OpenSSL's PRNG using
RAND_status(), and if necessary (very rarely), seeding it using
RAND_poll().

Back-patch to v10, where pg_strong_random() was introduced.

Dean Rasheed and Michael Paquier.

Discussion: https://postgr.es/m/CAEZATCXMtxbzSAvyKKk5uCRf9pNt4UV%2BF_5v%3DgLfJUuPxU4Ytg%40mail.gmail.com

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/821200405cc3f25fda28c5f58d17d640e25559b8

Modified Files
--------------
src/port/pg_strong_random.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)


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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: pgsql: Bump catalog version for recent toast table additions
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Avoid unportable shell syntax in pg_upgrade's test script.