From 2dea67bdc43b93c8d85979cc4f4a0ed839dad6e5 Mon Sep 17 00:00:00 2001 From: Zsolt Parragi Date: Sun, 15 Mar 2026 11:21:33 +0000 Subject: [PATCH 1/4] gen_guc_tables: reject unrecognized field names in guc_parameters.dat Previously, a typo in a field name (e.g. "contex" instead of "context") would be silently ignored, potentially leading to subtle bugs or missing configuration. Add a whitelist of all recognized fields and report an error if any entry contains an unknown key. --- src/backend/utils/misc/gen_guc_tables.pl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/backend/utils/misc/gen_guc_tables.pl b/src/backend/utils/misc/gen_guc_tables.pl index a285c62f98d..ba2e6f001f1 100644 --- a/src/backend/utils/misc/gen_guc_tables.pl +++ b/src/backend/utils/misc/gen_guc_tables.pl @@ -53,6 +53,25 @@ sub validate_guc_entry string => [], # no extra required fields ); + # All fields recognized by the generator. "line_number" is injected + # by Catalog::ParseData and is not a user-facing field. + my %valid_fields = map { $_ => 1 } ( + @required_common, + qw(long_desc flags ifdef min max options + check_hook assign_hook show_hook + line_number)); + + for my $f (sort keys %$entry) + { + unless ($valid_fields{$f}) + { + die sprintf( + qq{%s:%d: error: entry "%s" has unrecognized field "%s"\n}, + $input_fname, $entry->{line_number}, + $entry->{name} // '', $f); + } + } + for my $f (@required_common) { unless (defined $entry->{$f}) -- 2.43.0