v1-0001-postgres_fdw-dblink-Validate-use_scram_passthroug.patch
application/octet-stream
Filename: v1-0001-postgres_fdw-dblink-Validate-use_scram_passthroug.patch
Type: application/octet-stream
Part: 0
From 0169c8ef7e49749b7618d2c41dfc3670d695e4fa Mon Sep 17 00:00:00 2001
From: Fujii Masao <fujii@postgresql.org>
Date: Wed, 27 May 2026 23:19:18 +0900
Subject: [PATCH v1] postgres_fdw, dblink: Validate use_scram_passthrough
values
The use_scram_passthrough option in postgres_fdw and dblink accepts
only boolean values. However, unlike other boolean options such as
keep_connections, its value was not previously validated.
As a result, commands such as
"CREATE SERVER ... OPTIONS (use_scram_passthrough 'invalid')"
could succeed unexpectedly.
This commit updates postgres_fdw and dblink to validate that
use_scram_passthrough is assigned a valid boolean value, and throw an
error for invalid input.
---
contrib/dblink/dblink.c | 3 +++
contrib/postgres_fdw/option.c | 3 ++-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index 448d469aba8..3329f9ac0cc 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -1995,6 +1995,9 @@ dblink_fdw_validator(PG_FUNCTION_ARGS)
closest_match) : 0 :
errhint("There are no valid options in this context.")));
}
+
+ if (strcmp(def->defname, "use_scram_passthrough") == 0)
+ (void) defGetBoolean(def); /* accept only boolean values */
}
PG_RETURN_VOID();
diff --git a/contrib/postgres_fdw/option.c b/contrib/postgres_fdw/option.c
index 3944aedbacc..79b16c3f318 100644
--- a/contrib/postgres_fdw/option.c
+++ b/contrib/postgres_fdw/option.c
@@ -121,7 +121,8 @@ postgres_fdw_validator(PG_FUNCTION_ARGS)
strcmp(def->defname, "parallel_commit") == 0 ||
strcmp(def->defname, "parallel_abort") == 0 ||
strcmp(def->defname, "keep_connections") == 0 ||
- strcmp(def->defname, "restore_stats") == 0)
+ strcmp(def->defname, "restore_stats") == 0 ||
+ strcmp(def->defname, "use_scram_passthrough") == 0)
{
/* these accept only boolean values */
(void) defGetBoolean(def);
--
2.53.0