Ensure configuration parameter "replication_user" is smaller than NAMEDATALEN

This commit is contained in:
Ian Barwick
2017-07-06 00:22:23 +09:00
parent ff4cc64a67
commit 9351e532b4
4 changed files with 19 additions and 14 deletions

View File

@@ -337,7 +337,13 @@ _parse_config(t_configuration_options *options, ItemList *error_list, ItemList *
else if (strcmp(name, "conninfo") == 0) else if (strcmp(name, "conninfo") == 0)
strncpy(options->conninfo, value, MAXLEN); strncpy(options->conninfo, value, MAXLEN);
else if (strcmp(name, "replication_user") == 0) else if (strcmp(name, "replication_user") == 0)
strncpy(options->replication_user, value, MAXLEN); {
if (strlen(value) < NAMEDATALEN)
strncpy(options->replication_user, value, NAMEDATALEN);
else
item_list_append(error_list,
_( "value for \"replication_user\" must contain fewer than " STR(NAMEDATALEN) " characters"));
}
else if (strcmp(name, "pg_bindir") == 0) else if (strcmp(name, "pg_bindir") == 0)
strncpy(options->pg_bindir, value, MAXLEN); strncpy(options->pg_bindir, value, MAXLEN);
else if (strcmp(name, "replication_type") == 0) else if (strcmp(name, "replication_type") == 0)
@@ -347,7 +353,7 @@ _parse_config(t_configuration_options *options, ItemList *error_list, ItemList *
else if (strcmp(value, "bdr") == 0) else if (strcmp(value, "bdr") == 0)
options->replication_type = REPLICATION_TYPE_BDR; options->replication_type = REPLICATION_TYPE_BDR;
else else
item_list_append(error_list, _("value for 'replication_type' must be 'physical' or 'bdr'")); item_list_append(error_list, _("value for \"replication_type\" must be \"physical\" or \"bdr\""));
} }
/* log settings */ /* log settings */

View File

@@ -53,7 +53,7 @@ typedef struct
int node_id; int node_id;
char node_name[MAXLEN]; char node_name[MAXLEN];
char conninfo[MAXLEN]; char conninfo[MAXLEN];
char replication_user[MAXLEN]; char replication_user[NAMEDATALEN];
char pg_bindir[MAXLEN]; char pg_bindir[MAXLEN];
int replication_type; int replication_type;

View File

@@ -54,7 +54,7 @@ typedef struct s_node_info
t_server_type type; t_server_type type;
char node_name[MAXLEN]; char node_name[MAXLEN];
char conninfo[MAXLEN]; char conninfo[MAXLEN];
char repluser[MAXLEN]; char repluser[NAMEDATALEN];
char slot_name[MAXLEN]; char slot_name[MAXLEN];
int priority; int priority;
bool active; bool active;

View File

@@ -2,16 +2,15 @@
\echo Use "CREATE EXTENSION repmgr" to load this file. \quit \echo Use "CREATE EXTENSION repmgr" to load this file. \quit
CREATE TABLE nodes ( CREATE TABLE nodes (
node_id INTEGER PRIMARY KEY, node_id INTEGER PRIMARY KEY,
upstream_node_id INTEGER NULL REFERENCES nodes (node_id) DEFERRABLE, upstream_node_id INTEGER NULL REFERENCES nodes (node_id) DEFERRABLE,
active BOOLEAN NOT NULL DEFAULT TRUE, active BOOLEAN NOT NULL DEFAULT TRUE,
node_name TEXT NOT NULL, node_name TEXT NOT NULL,
type TEXT NOT NULL CHECK (type IN('primary','standby','witness','bdr')), type TEXT NOT NULL CHECK (type IN('primary','standby','witness','bdr')),
priority INT NOT NULL DEFAULT 100,
priority INT NOT NULL DEFAULT 100, conninfo TEXT NOT NULL,
conninfo TEXT NOT NULL, repluser VARCHAR(63) NOT NULL,
repluser TEXT NOT NULL, slot_name TEXT NULL
slot_name TEXT NULL
); );
CREATE TABLE events ( CREATE TABLE events (