diff --git a/configfile.c b/configfile.c index 3234f873..dde59516 100644 --- a/configfile.c +++ b/configfile.c @@ -836,15 +836,16 @@ _parse_config(t_configuration_options *options, ItemList *error_list, ItemList * conninfo_options = PQconninfoParse(options->conninfo, &conninfo_errmsg); if (conninfo_options == NULL) { - char error_message_buf[MAXLEN] = ""; + PQExpBufferData error_message_buf; + initPQExpBuffer(&error_message_buf); - snprintf(error_message_buf, - MAXLEN, - _("\"conninfo\": %s (provided: \"%s\")"), - conninfo_errmsg, - options->conninfo); + appendPQExpBuffer(&error_message_buf, + _("\"conninfo\": %s (provided: \"%s\")"), + conninfo_errmsg, + options->conninfo); - item_list_append(error_list, error_message_buf); + item_list_append(error_list, error_message_buf.data); + termPQExpBuffer(&error_message_buf); } PQconninfoFree(conninfo_options); diff --git a/dbutils.c b/dbutils.c index 5b248147..28a2578c 100644 --- a/dbutils.c +++ b/dbutils.c @@ -1521,10 +1521,10 @@ get_ready_archive_files(PGconn *conn, const char *data_directory) while ((arcdir_ent = readdir(arcdir)) != NULL) { struct stat statbuf; - char file_path[MAXPGPATH] = ""; + char file_path[MAXPGPATH + sizeof(arcdir_ent->d_name)]; int basenamelen = 0; - snprintf(file_path, MAXPGPATH, + snprintf(file_path, sizeof(file_path), "%s/%s", archive_status_dir, arcdir_ent->d_name); diff --git a/repmgr-action-standby.c b/repmgr-action-standby.c index 5a87bdba..133a46ad 100644 --- a/repmgr-action-standby.c +++ b/repmgr-action-standby.c @@ -906,7 +906,7 @@ _do_create_recovery_conf(void) t_node_info upstream_node_record = T_NODE_INFO_INITIALIZER; RecordStatus record_status = RECORD_NOT_FOUND; - char recovery_file_path[MAXPGPATH] = ""; + char recovery_file_path[MAXPGPATH + sizeof(RECOVERY_COMMAND_FILE)] = ""; struct stat st; bool node_is_running = false; bool slot_creation_required = false; @@ -1151,7 +1151,10 @@ _do_create_recovery_conf(void) /* check if recovery.conf exists */ - snprintf(recovery_file_path, MAXPGPATH, "%s/%s", local_data_directory, RECOVERY_COMMAND_FILE); + snprintf(recovery_file_path, sizeof(recovery_file_path), + "%s/%s", + local_data_directory, + RECOVERY_COMMAND_FILE); if (stat(recovery_file_path, &st) == -1) {