diff --git a/config.c b/config.c index 88265a96..980a1759 100644 --- a/config.c +++ b/config.c @@ -111,6 +111,10 @@ parse_config(t_configuration_options *options) char name[MAXLEN]; char value[MAXLEN]; + /* For sanity-checking provided conninfo string */ + PQconninfoOption *conninfo_options; + char *conninfo_errmsg = NULL; + fp = fopen(config_file_path, "r"); /* @@ -310,6 +314,18 @@ parse_config(t_configuration_options *options) exit(ERR_BAD_CONFIG); } + /* Sanity check the provided conninfo string + * + * NOTE: this verifies the string format and checks for valid options + * but does not sanity check values + */ + conninfo_options = PQconninfoParse(options->conninfo, &conninfo_errmsg); + if (conninfo_options == NULL) + { + log_err(_("Parameter 'conninfo' is invalid: %s"), conninfo_errmsg); + exit(ERR_BAD_CONFIG); + } + /* The following checks are for valid parameter values */ if (options->master_response_timeout <= 0) {