From cf64f9e95c5e2080eb3897e01c4f8adc0be8296a Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Tue, 13 Feb 2018 09:08:40 +0900 Subject: [PATCH] Always initialise t_conninfo_param_list structures --- dbutils.c | 11 +++++++---- repmgr-action-cluster.c | 2 +- repmgr-action-node.c | 2 +- repmgr-action-standby.c | 10 +++++----- repmgr-client.c | 4 ++-- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/dbutils.c b/dbutils.c index a4e752de..b6c9b8eb 100644 --- a/dbutils.c +++ b/dbutils.c @@ -421,15 +421,18 @@ free_conninfo_params(t_conninfo_param_list *param_list) for (c = 0; c < param_list->size; c++) { - if (param_list->keywords[c] != NULL) + if (param_list->keywords != NULL && param_list->keywords[c] != NULL) pfree(param_list->keywords[c]); - if (param_list->values[c] != NULL) + if (param_list->values != NULL && param_list->values[c] != NULL) pfree(param_list->values[c]); } - pfree(param_list->keywords); - pfree(param_list->values); + if (param_list->keywords != NULL) + pfree(param_list->keywords); + + if (param_list->values != NULL) + pfree(param_list->values); } diff --git a/repmgr-action-cluster.c b/repmgr-action-cluster.c index 44b5a5cd..68c30be7 100644 --- a/repmgr-action-cluster.c +++ b/repmgr-action-cluster.c @@ -1148,7 +1148,7 @@ build_cluster_crosscheck(t_node_status_cube ***dest_cube, int *name_length) } else { - t_conninfo_param_list remote_conninfo; + t_conninfo_param_list remote_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; char *host = NULL; PQExpBufferData quoted_command; diff --git a/repmgr-action-node.c b/repmgr-action-node.c index 4044baa7..d079c341 100644 --- a/repmgr-action-node.c +++ b/repmgr-action-node.c @@ -924,7 +924,7 @@ do_node_check_replication_connection(void) PGconn *repl_conn = NULL; t_node_info node_record = T_NODE_INFO_INITIALIZER; RecordStatus record_status = RECORD_NOT_FOUND; - t_conninfo_param_list remote_conninfo; + t_conninfo_param_list remote_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; PQExpBufferData output; diff --git a/repmgr-action-standby.c b/repmgr-action-standby.c index a6d6111a..4a14563f 100644 --- a/repmgr-action-standby.c +++ b/repmgr-action-standby.c @@ -57,7 +57,7 @@ static bool upstream_conninfo_found = false; static int upstream_node_id = UNKNOWN_NODE_ID; static char upstream_data_directory[MAXPGPATH]; -static t_conninfo_param_list recovery_conninfo; +static t_conninfo_param_list recovery_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; static char recovery_conninfo_str[MAXLEN] = ""; static char upstream_repluser[NAMEDATALEN] = ""; @@ -2028,7 +2028,7 @@ do_standby_follow(void) int follow_error_code = SUCCESS; uint64 local_system_identifier = UNKNOWN_SYSTEM_IDENTIFIER; - t_conninfo_param_list repl_conninfo; + t_conninfo_param_list repl_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; PGconn *repl_conn = NULL; t_system_identification primary_identification = T_SYSTEM_IDENTIFICATION_INITIALIZER; @@ -2320,7 +2320,7 @@ do_standby_follow_internal(PGconn *primary_conn, t_node_info *primary_node_recor parse_conninfo_string(primary_node_record->conninfo, &recovery_conninfo, &errmsg, true); { - t_conninfo_param_list local_node_conninfo; + t_conninfo_param_list local_node_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; bool parse_success; initialize_conninfo_params(&local_node_conninfo, false); @@ -4315,7 +4315,7 @@ check_upstream_config(PGconn *conn, int server_version_num, t_node_info *node_in int min_replication_connections = 1, possible_replication_connections = 0; - t_conninfo_param_list repl_conninfo; + t_conninfo_param_list repl_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; /* * Make a copy of the connection parameter arrays, and append @@ -5850,7 +5850,7 @@ write_primary_conninfo(PQExpBufferData *dest, t_conninfo_param_list *param_list) bool password_provided = false; int c; char *escaped = NULL; - t_conninfo_param_list env_conninfo; + t_conninfo_param_list env_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; initialize_conninfo_params(&env_conninfo, true); diff --git a/repmgr-client.c b/repmgr-client.c index d4239dd1..5b27a3d9 100644 --- a/repmgr-client.c +++ b/repmgr-client.c @@ -73,7 +73,7 @@ t_runtime_options runtime_options = T_RUNTIME_OPTIONS_INITIALIZER; t_configuration_options config_file_options = T_CONFIGURATION_OPTIONS_INITIALIZER; /* conninfo params for the node we're operating on */ -t_conninfo_param_list source_conninfo; +t_conninfo_param_list source_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; bool config_file_required = true; char pg_bindir[MAXLEN] = ""; @@ -96,7 +96,7 @@ static bool _local_command(const char *command, PQExpBufferData *outputbuf, bool int main(int argc, char **argv) { - t_conninfo_param_list default_conninfo; + t_conninfo_param_list default_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; int optindex; int c;