mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-28 07:31:51 +02: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.
|
Records cannot be continued across lines.
|
||||||
A record is made
|
A record is made
|
||||||
up of a number of fields which are separated by spaces and/or tabs.
|
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.,
|
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
|
<literal>all</> or <literal>replication</>) makes the word lose its special
|
||||||
character, and just match a database, user, or host with that name.
|
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.
|
* appear in pairs, so there should be another character.
|
||||||
*/
|
*/
|
||||||
i++;
|
i++;
|
||||||
|
/* The bootstrap parser is not as smart, so check here. */
|
||||||
|
Assert(s[i] == '\'');
|
||||||
newStr[j] = s[i];
|
newStr[j] = s[i];
|
||||||
}
|
}
|
||||||
else if (s[i] == '\\')
|
else if (s[i] == '\\')
|
||||||
|
@ -1395,7 +1395,7 @@ bootstrap_template1(void)
|
|||||||
bki_lines = replace_token(bki_lines, "FLOAT8PASSBYVAL",
|
bki_lines = replace_token(bki_lines, "FLOAT8PASSBYVAL",
|
||||||
FLOAT8PASSBYVAL ? "true" : "false");
|
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);
|
bki_lines = replace_token(bki_lines, "ENCODING", encodingid);
|
||||||
|
|
||||||
@ -2043,8 +2043,8 @@ setup_privileges(void)
|
|||||||
|
|
||||||
PG_CMD_OPEN;
|
PG_CMD_OPEN;
|
||||||
|
|
||||||
priv_lines = replace_token(privileges_setup,
|
priv_lines = replace_token(privileges_setup, "$POSTGRES_SUPERUSERNAME",
|
||||||
"$POSTGRES_SUPERUSERNAME", username);
|
escape_quotes(username));
|
||||||
for (line = priv_lines; *line != NULL; line++)
|
for (line = priv_lines; *line != NULL; line++)
|
||||||
PG_CMD_PUTS(*line);
|
PG_CMD_PUTS(*line);
|
||||||
|
|
||||||
@ -3056,7 +3056,6 @@ main(int argc, char *argv[])
|
|||||||
canonicalize_path(pg_data);
|
canonicalize_path(pg_data);
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Before we execute another program, make sure that we are running with a
|
* Before we execute another program, make sure that we are running with a
|
||||||
* restricted token. If not, re-execute ourselves with one.
|
* restricted token. If not, re-execute ourselves with one.
|
||||||
|
Loading…
Reference in New Issue
Block a user