pg_controldata: Fix possible errors on corrupted pg_control Protect against malformed timestamps. Also protect against negative WalSegSz as it triggers division by zero:
((0x100000000UL) / (WalSegSz)) can turn into zero in XLogFileName(xlogfilename, ControlFile->checkPointCopy.ThisTimeLineID, segno, WalSegSz); because if WalSegSz is -1 then by arithmetic rules in C we get 0x100000000UL / 0xFFFFFFFFFFFFFFFFUL == 0. Author: Ilyasov Ian <ianilya...@outlook.com> Author: Anton Voloshin <a.volos...@postgrespro.ru> Backpatch-through: 13 Branch ------ REL_15_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/f1e0b078b2e3613d28dc10090d35cc3908bbbd09 Modified Files -------------- src/bin/pg_controldata/pg_controldata.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-)