mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-25 08:06:29 +00:00
Restrict "node_name" to maximum 63 characters
In "recovery.conf", the configuration parameter "node_name" is used as the "application_name" value, which will be truncated by PostgreSQL to 63 characters (NAMEDATALEN - 1). repmgr sometimes needs to be able to extract the application name from pg_stat_replication to determine if a node is connected (e.g. when executing "repmgr standby register"), so the comparison will fail if "node_name" exceeds 63 characters.
This commit is contained in:
@@ -356,9 +356,15 @@ main(int argc, char **argv)
|
||||
|
||||
/* --node-name */
|
||||
case OPT_NODE_NAME:
|
||||
strncpy(runtime_options.node_name, optarg, MAXLEN);
|
||||
{
|
||||
if (strlen(optarg) < sizeof(runtime_options.node_name))
|
||||
strncpy(runtime_options.node_name, optarg, sizeof(runtime_options.node_name));
|
||||
else
|
||||
item_list_append_format(&cli_errors,
|
||||
_("value for \"--node-name\" must contain fewer than %lu characters"),
|
||||
sizeof(runtime_options.node_name));
|
||||
break;
|
||||
|
||||
}
|
||||
/* --remote-node-id */
|
||||
case OPT_REMOTE_NODE_ID:
|
||||
runtime_options.remote_node_id = repmgr_atoi(optarg, "--remote-node-id", &cli_errors, MIN_NODE_ID);
|
||||
@@ -3001,7 +3007,7 @@ init_node_record(t_node_info *node_record)
|
||||
strncpy(node_record->location, "default", MAXLEN);
|
||||
|
||||
|
||||
strncpy(node_record->node_name, config_file_options.node_name, MAXLEN);
|
||||
strncpy(node_record->node_name, config_file_options.node_name, sizeof(node_record->node_name));
|
||||
strncpy(node_record->conninfo, config_file_options.conninfo, MAXLEN);
|
||||
strncpy(node_record->config_file, config_file_path, MAXPGPATH);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user