aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2019-03-13 09:51:02 +0900
committerMichael Paquier <michael@paquier.xyz>2019-03-13 09:51:02 +0900
commitc9ae7f704c6772a99a456ed50d226c1fdf23f6d7 (patch)
tree258882a892230b29c4700adddd6351666497ab69
parent3f34283973a342aa1cb709d6e8f5cea430efcf29 (diff)
downloadpostgresql-c9ae7f704c6772a99a456ed50d226c1fdf23f6d7.tar.gz
postgresql-c9ae7f704c6772a99a456ed50d226c1fdf23f6d7.zip
Fix cross-version compatibility checks 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, but we never actually checked that compatibility. Reported-by: Sergei Kornilov Author: Michael Paquier Reviewed-by: Sergei Kornilov Discussion: https://postgr.es/m/155231347133.16480.11453587097036807558.pgcf@coridan.postgresql.org Backpatch-through: 11
-rw-r--r--src/bin/pg_verify_checksums/pg_verify_checksums.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/bin/pg_verify_checksums/pg_verify_checksums.c b/src/bin/pg_verify_checksums/pg_verify_checksums.c
index 511262ab5ff..4c7c055b314 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)
{