Skip to content

Commit 3615376

Browse files
Issue (#1): Initial Commit.
1 parent 999c6fe commit 3615376

10 files changed

Lines changed: 68 additions & 144 deletions

pgraft/src/pgraft_go.h

Lines changed: 0 additions & 122 deletions
This file was deleted.

ramd/include/ramd_config_reload.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ typedef struct ramd_config_reload_result_t
4444
ramd_config_change_flags_t changes_detected;
4545
ramd_config_change_flags_t changes_applied;
4646
time_t reload_time;
47-
char error_message[256];
48-
char warnings[512];
47+
char error_message[RAMD_MAX_HOSTNAME_LENGTH];
48+
char warnings[RAMD_MAX_COMMAND_LENGTH];
4949
} ramd_config_reload_result_t;
5050

5151
/* Function prototypes */

ramd/include/ramd_maintenance.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ typedef struct ramd_maintenance_config_t
4646
int32_t drain_timeout_ms;
4747
bool prevent_writes;
4848
bool backup_before_maintenance;
49-
char reason[256];
50-
char contact_info[128];
49+
char reason[RAMD_MAX_HOSTNAME_LENGTH];
50+
char contact_info[RAMD_MAX_HOSTNAME_LENGTH];
5151
time_t scheduled_start;
5252
time_t scheduled_end;
5353
int32_t max_duration_ms;
@@ -63,14 +63,14 @@ typedef struct ramd_maintenance_state_t
6363
time_t start_time;
6464
time_t end_time;
6565
time_t scheduled_end;
66-
char reason[256];
67-
char contact_info[128];
68-
char initiated_by[64];
66+
char reason[RAMD_MAX_HOSTNAME_LENGTH];
67+
char contact_info[RAMD_MAX_HOSTNAME_LENGTH];
68+
char initiated_by[RAMD_MAX_HOSTNAME_LENGTH];
6969
bool auto_failover_disabled;
7070
bool connections_drained;
7171
int32_t active_connections;
72-
char backup_id[64];
73-
char status_message[256];
72+
char backup_id[RAMD_MAX_HOSTNAME_LENGTH];
73+
char status_message[RAMD_MAX_HOSTNAME_LENGTH];
7474
} ramd_maintenance_state_t;
7575

7676
/* Pre-maintenance checks */
@@ -83,7 +83,7 @@ typedef struct ramd_maintenance_check_t
8383
bool backup_available;
8484
bool sufficient_standbys;
8585
int32_t active_connections;
86-
char check_details[512];
86+
char check_details[RAMD_MAX_COMMAND_LENGTH];
8787
} ramd_maintenance_check_t;
8888

8989
/* Function prototypes */

ramd/include/ramd_metrics.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ typedef struct ramd_metrics_t
3030

3131
/* Node metrics */
3232
int32_t node_id;
33-
char node_hostname[256];
33+
char node_hostname[RAMD_MAX_HOSTNAME_LENGTH];
3434
ramd_node_state_t node_state;
3535
ramd_role_t node_role;
3636
bool node_is_healthy;

ramd/include/ramd_sync_replication.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,20 @@ typedef enum
3838
typedef struct ramd_sync_config_t
3939
{
4040
ramd_sync_mode_t mode;
41-
char synchronous_standby_names[512];
41+
char synchronous_standby_names[RAMD_MAX_COMMAND_LENGTH];
4242
int32_t num_sync_standbys;
4343
int32_t sync_timeout_ms;
4444
bool enforce_sync_standbys;
45-
char application_name_pattern[128];
45+
char application_name_pattern[RAMD_MAX_HOSTNAME_LENGTH];
4646
} ramd_sync_config_t;
4747

4848
/* Synchronous Standby Information */
4949
typedef struct ramd_sync_standby_t
5050
{
5151
int32_t node_id;
52-
char hostname[64];
52+
char hostname[RAMD_MAX_HOSTNAME_LENGTH];
5353
int32_t port;
54-
char application_name[64];
54+
char application_name[RAMD_MAX_HOSTNAME_LENGTH];
5555
bool is_sync;
5656
bool is_connected;
5757
int64_t flush_lag_bytes;

ramd/src/ramd_config.c

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,29 @@ void ramd_config_set_defaults(ramd_config_t* config)
4747

4848
strncpy(config->postgresql_bin_dir, pgbin ? pgbin : RAMD_DEFAULT_PG_BIN_DIR,
4949
sizeof(config->postgresql_bin_dir) - 1);
50+
config->postgresql_bin_dir[sizeof(config->postgresql_bin_dir) - 1] = '\0';
5051
strncpy(config->postgresql_data_dir,
5152
pgdata ? pgdata : RAMD_DEFAULT_PG_DATA_DIR,
5253
sizeof(config->postgresql_data_dir) - 1);
54+
config->postgresql_data_dir[sizeof(config->postgresql_data_dir) - 1] = '\0';
5355
strncpy(config->postgresql_log_dir, pglog ? pglog : RAMD_DEFAULT_PG_LOG_DIR,
5456
sizeof(config->postgresql_log_dir) - 1);
57+
config->postgresql_log_dir[sizeof(config->postgresql_log_dir) - 1] = '\0';
5558

5659
pgdb = getenv("PGDATABASE");
5760
pguser = getenv("PGUSER");
5861
strncpy(config->database_name, pgdb ? pgdb : RAMD_DEFAULT_PG_DATABASE,
5962
sizeof(config->database_name) - 1);
63+
config->database_name[sizeof(config->database_name) - 1] = '\0';
6064
strncpy(config->database_user, pguser ? pguser : RAMD_DEFAULT_PG_USER,
6165
sizeof(config->database_user) - 1);
66+
config->database_user[sizeof(config->database_user) - 1] = '\0';
6267
strncpy(config->postgresql_user, pguser ? pguser : RAMD_DEFAULT_PG_USER,
6368
sizeof(config->postgresql_user) - 1);
69+
config->postgresql_user[sizeof(config->postgresql_user) - 1] = '\0';
6470
strncpy(config->cluster_name, RAMD_DEFAULT_CLUSTER_NAME,
6571
sizeof(config->cluster_name) - 1);
72+
config->cluster_name[sizeof(config->cluster_name) - 1] = '\0';
6673

6774
config->cluster_size = RAMD_DEFAULT_CLUSTER_SIZE;
6875
config->auto_failover_enabled = true;
@@ -93,6 +100,7 @@ void ramd_config_set_defaults(ramd_config_t* config)
93100

94101
strncpy(config->http_bind_address, RAMD_DEFAULT_HTTP_BIND_ADDRESS,
95102
sizeof(config->http_bind_address) - 1);
103+
config->http_bind_address[sizeof(config->http_bind_address) - 1] = '\0';
96104
}
97105

98106
bool ramd_config_load_file(ramd_config_t* config, const char* config_file)
@@ -203,33 +211,57 @@ bool ramd_config_parse_key_value(ramd_config_t* config, const char* key,
203211
if (strcmp(key, "node_id") == 0)
204212
config->node_id = atoi(value);
205213
else if (strcmp(key, "hostname") == 0)
214+
{
206215
strncpy(config->hostname, value, sizeof(config->hostname) - 1);
216+
config->hostname[sizeof(config->hostname) - 1] = '\0';
217+
}
207218
else if (strcmp(key, "postgresql_port") == 0)
208219
config->postgresql_port = atoi(value);
209220
else if (strcmp(key, "rale_port") == 0)
210221
config->rale_port = atoi(value);
211222
else if (strcmp(key, "dstore_port") == 0)
212223
config->dstore_port = atoi(value);
213224
else if (strcmp(key, "postgresql_bin_dir") == 0)
225+
{
214226
strncpy(config->postgresql_bin_dir, value,
215227
sizeof(config->postgresql_bin_dir) - 1);
228+
config->postgresql_bin_dir[sizeof(config->postgresql_bin_dir) - 1] = '\0';
229+
}
216230
else if (strcmp(key, "postgresql_data_dir") == 0)
231+
{
217232
strncpy(config->postgresql_data_dir, value,
218233
sizeof(config->postgresql_data_dir) - 1);
234+
config->postgresql_data_dir[sizeof(config->postgresql_data_dir) - 1] = '\0';
235+
}
219236
else if (strcmp(key, "database_name") == 0)
237+
{
220238
strncpy(config->database_name, value,
221239
sizeof(config->database_name) - 1);
240+
config->database_name[sizeof(config->database_name) - 1] = '\0';
241+
}
222242
else if (strcmp(key, "database_user") == 0)
243+
{
223244
strncpy(config->database_user, value,
224245
sizeof(config->database_user) - 1);
246+
config->database_user[sizeof(config->database_user) - 1] = '\0';
247+
}
225248
else if (strcmp(key, "postgresql_user") == 0)
249+
{
226250
strncpy(config->postgresql_user, value,
227251
sizeof(config->postgresql_user) - 1);
252+
config->postgresql_user[sizeof(config->postgresql_user) - 1] = '\0';
253+
}
228254
else if (strcmp(key, "database_password") == 0)
255+
{
229256
strncpy(config->database_password, value,
230257
sizeof(config->database_password) - 1);
258+
config->database_password[sizeof(config->database_password) - 1] = '\0';
259+
}
231260
else if (strcmp(key, "cluster_name") == 0)
261+
{
232262
strncpy(config->cluster_name, value, sizeof(config->cluster_name) - 1);
263+
config->cluster_name[sizeof(config->cluster_name) - 1] = '\0';
264+
}
233265
else if (strcmp(key, "cluster_size") == 0)
234266
config->cluster_size = atoi(value);
235267
else if (strcmp(key, "auto_failover_enabled") == 0)
@@ -245,7 +277,10 @@ bool ramd_config_parse_key_value(ramd_config_t* config, const char* key,
245277
else if (strcmp(key, "failover_timeout_ms") == 0)
246278
config->failover_timeout_ms = atoi(value);
247279
else if (strcmp(key, "log_file") == 0)
280+
{
248281
strncpy(config->log_file, value, sizeof(config->log_file) - 1);
282+
config->log_file[sizeof(config->log_file) - 1] = '\0';
283+
}
249284
else if (strcmp(key, "log_level") == 0)
250285
config->log_level = ramd_logging_string_to_level(value);
251286
else if (strcmp(key, "log_to_syslog") == 0)
@@ -258,19 +293,28 @@ bool ramd_config_parse_key_value(ramd_config_t* config, const char* key,
258293
config->http_api_enabled =
259294
(strcmp(value, "true") == 0 || strcmp(value, "1") == 0);
260295
else if (strcmp(key, "http_bind_address") == 0)
296+
{
261297
strncpy(config->http_bind_address, value,
262298
sizeof(config->http_bind_address) - 1);
299+
config->http_bind_address[sizeof(config->http_bind_address) - 1] = '\0';
300+
}
263301
else if (strcmp(key, "http_port") == 0)
264302
config->http_port = atoi(value);
265303
else if (strcmp(key, "http_auth_enabled") == 0)
266304
config->http_auth_enabled =
267305
(strcmp(value, "true") == 0 || strcmp(value, "1") == 0);
268306
else if (strcmp(key, "http_auth_token") == 0)
307+
{
269308
strncpy(config->http_auth_token, value,
270309
sizeof(config->http_auth_token) - 1);
310+
config->http_auth_token[sizeof(config->http_auth_token) - 1] = '\0';
311+
}
271312
else if (strcmp(key, "sync_standby_names") == 0)
313+
{
272314
strncpy(config->sync_standby_names, value,
273315
sizeof(config->sync_standby_names) - 1);
316+
config->sync_standby_names[sizeof(config->sync_standby_names) - 1] = '\0';
317+
}
274318
else if (strcmp(key, "num_sync_standbys") == 0)
275319
config->num_sync_standbys = atoi(value);
276320
else if (strcmp(key, "sync_timeout_ms") == 0)
@@ -287,7 +331,10 @@ bool ramd_config_parse_key_value(ramd_config_t* config, const char* key,
287331
config->maintenance_backup_before =
288332
(strcmp(value, "true") == 0 || strcmp(value, "1") == 0);
289333
else if (strcmp(key, "pid_file") == 0)
334+
{
290335
strncpy(config->pid_file, value, sizeof(config->pid_file) - 1);
336+
config->pid_file[sizeof(config->pid_file) - 1] = '\0';
337+
}
291338
else if (strcmp(key, "daemonize") == 0)
292339
config->daemonize =
293340
(strcmp(value, "true") == 0 || strcmp(value, "1") == 0);
@@ -419,6 +466,7 @@ void ramd_config_load_from_environment(ramd_config_t* config)
419466
{
420467
strncpy(config->cluster_name, env_value,
421468
sizeof(config->cluster_name) - 1);
469+
config->cluster_name[sizeof(config->cluster_name) - 1] = '\0';
422470
ramd_log_debug("Set cluster_name from environment: %s",
423471
config->cluster_name);
424472
}
@@ -434,6 +482,7 @@ void ramd_config_load_from_environment(ramd_config_t* config)
434482
{
435483
strncpy(config->postgresql_data_dir, env_value,
436484
sizeof(config->postgresql_data_dir) - 1);
485+
config->postgresql_data_dir[sizeof(config->postgresql_data_dir) - 1] = '\0';
437486
ramd_log_debug("Set postgresql_data_dir from environment: %s",
438487
config->postgresql_data_dir);
439488
}

ramd/src/ramd_config_reload.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,6 @@ bool ramd_config_reload_postgresql(const ramd_config_t* old_config,
413413
{
414414
bool port_changed;
415415
bool data_dir_changed;
416-
char result[RAMD_MAX_COMMAND_LENGTH];
417416

418417
if (!old_config || !new_config)
419418
return false;

ramd/src/ramd_http_api.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,8 +681,6 @@ ramd_http_handle_sync_replication(ramd_http_request_t *request, ramd_http_respon
681681
char mode_str[32] = "";
682682
int num_sync = -1;
683683
size_t len;
684-
ramd_sync_mode_t new_mode;
685-
ramd_sync_config_t sync_config;
686684

687685
if (request->method == RAMD_HTTP_GET)
688686
{

0 commit comments

Comments
 (0)