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.
Backpatch to v18, where use_scram_passthrough was introduced.
Author: Fujii Masao <masao.fujii@gmail.com>
Reviewed-by: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
Reviewed-by: Matheus Alcantara <matheusssilv97@gmail.com>
Discussion: https://postgr.es/m/CAHGQGwF+-k-Ehsu5W94ZP7GxS3wiBd+mi0PfGTdJ_i2Yr0zR3g@mail.gmail.com
Backpatch-through: 18
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();
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);