Hello. The commit a7e8ece41c adds a new member restoreCommand to XLogPageReadPrivate. readOneRecord doesn't make use of it but forgets to set NULL. That can lead to illegal pointer access.
regards. -- Kyotaro Horiguchi NTT Open Source Software Center
>From 2260cf859ffa570639fd0b04cc94540a937e6042 Mon Sep 17 00:00:00 2001 From: Kyotaro Horiguchi <horikyoga....@gmail.com> Date: Tue, 21 Apr 2020 14:15:39 +0900 Subject: [PATCH] Properly initalize a variable. Commit a7e8ece41c adds new member restoreCommand to XLogPageReadPrivate, but forgot to initialize it with NULL in readOneRecord. That leads to illegal pointer access in SimpleXLogPageRead. --- src/bin/pg_rewind/parsexlog.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/pg_rewind/parsexlog.c b/src/bin/pg_rewind/parsexlog.c index 14a5db5433..542160c493 100644 --- a/src/bin/pg_rewind/parsexlog.c +++ b/src/bin/pg_rewind/parsexlog.c @@ -115,6 +115,7 @@ readOneRecord(const char *datadir, XLogRecPtr ptr, int tliIndex) XLogRecPtr endptr; private.tliIndex = tliIndex; + private.restoreCommand = NULL; xlogreader = XLogReaderAllocate(WalSegSz, datadir, &SimpleXLogPageRead, &private); if (xlogreader == NULL) -- 2.18.2