mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Properly escape usernames in initdb, so names with single-quotes are
supported. Also add assert to catch future breakage. Also, improve documentation that "double"-quotes must be used in pg_hba.conf (not single quotes).
This commit is contained in:
parent
eb919e8fde
commit
a973296598
@ -80,7 +80,7 @@
|
||||
Records cannot be continued across lines.
|
||||
A record is made
|
||||
up of a number of fields which are separated by spaces and/or tabs.
|
||||
Fields can contain white space if the field value is quoted.
|
||||
Fields can contain white space if the field value is double-quoted.
|
||||
Quoting one of the keywords in a database, user, or address field (e.g.,
|
||||
<literal>all</> or <literal>replication</>) makes the word lose its special
|
||||
character, and just match a database, user, or host with that name.
|
||||
|
@ -56,6 +56,8 @@ scanstr(const char *s)
|
||||
* appear in pairs, so there should be another character.
|
||||
*/
|
||||
i++;
|
||||
/* The bootstrap parser is not as smart, so check here. */
|
||||
Assert(s[i] == '\'');
|
||||
newStr[j] = s[i];
|
||||
}
|
||||
else if (s[i] == '\\')
|
||||
|
@ -1395,7 +1395,7 @@ bootstrap_template1(void)
|
||||
bki_lines = replace_token(bki_lines, "FLOAT8PASSBYVAL",
|
||||
FLOAT8PASSBYVAL ? "true" : "false");
|
||||
|
||||
bki_lines = replace_token(bki_lines, "POSTGRES", username);
|
||||
bki_lines = replace_token(bki_lines, "POSTGRES", escape_quotes(username));
|
||||
|
||||
bki_lines = replace_token(bki_lines, "ENCODING", encodingid);
|
||||
|
||||
@ -2043,8 +2043,8 @@ setup_privileges(void)
|
||||
|
||||
PG_CMD_OPEN;
|
||||
|
||||
priv_lines = replace_token(privileges_setup,
|
||||
"$POSTGRES_SUPERUSERNAME", username);
|
||||
priv_lines = replace_token(privileges_setup, "$POSTGRES_SUPERUSERNAME",
|
||||
escape_quotes(username));
|
||||
for (line = priv_lines; *line != NULL; line++)
|
||||
PG_CMD_PUTS(*line);
|
||||
|
||||
@ -3056,7 +3056,6 @@ main(int argc, char *argv[])
|
||||
canonicalize_path(pg_data);
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
/*
|
||||
* Before we execute another program, make sure that we are running with a
|
||||
* restricted token. If not, re-execute ourselves with one.
|
||||
|
Loading…
Reference in New Issue
Block a user