From ef3e4f9b0dbff7deaaf19cb303f71c7883193a72 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Tue, 12 Mar 2019 10:43:47 +0900 Subject: [PATCH v2 1/4] Ensure version compatibility of pg_verify_checksums pg_verify_checksums performs a read of the control file, and the data it fetches should be from a data folder compatible with the major version of Postgres the binary has been compiled with. Reported-by: Sergei Kornilov Author: Michael Paquier Discussion: https://postgr.es/m/155231347133.16480.11453587097036807558.pgcf@coridan.postgresql.org Backpatch-through: 11, where the tool has been introduced. --- src/bin/pg_verify_checksums/pg_verify_checksums.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/bin/pg_verify_checksums/pg_verify_checksums.c b/src/bin/pg_verify_checksums/pg_verify_checksums.c index 511262ab5f..4c7c055b31 100644 --- a/src/bin/pg_verify_checksums/pg_verify_checksums.c +++ b/src/bin/pg_verify_checksums/pg_verify_checksums.c @@ -316,6 +316,13 @@ main(int argc, char *argv[]) exit(1); } + if (ControlFile->pg_control_version != PG_CONTROL_VERSION) + { + fprintf(stderr, _("%s: cluster is not compatible with this version of pg_verify_checksums\n"), + progname); + exit(1); + } + if (ControlFile->state != DB_SHUTDOWNED && ControlFile->state != DB_SHUTDOWNED_IN_RECOVERY) { -- 2.20.1