Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcbc8d65

Browse files
committed
Code + docs review for escaping of option values (commit11a020e).
Avoid memory leak from incorrect choice of how to free a StringInfo(resetStringInfo doesn't do it). Now that pg_split_opts doesn't scribbleon the optstr, mark that as "const" for clarity. Attach the commentary inprotocol.sgml to the right place, and add documentation about theuser-visible effects of this change on postgres' -o option and libpq'sPGOPTIONS option.
1 parent07cb8b0 commitcbc8d65

File tree

5 files changed

+29
-19
lines changed

5 files changed

+29
-19
lines changed

‎doc/src/sgml/libpq.sgml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,10 +1016,13 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname
10161016
<term><literal>options</literal></term>
10171017
<listitem>
10181018
<para>
1019-
Adds command-line options to send to the server atrun-time.
1020-
For example, setting this to <literal>-c geqo=off</> sets the
1019+
Specifies command-line options to send to the server atconnection
1020+
start.For example, setting this to <literal>-c geqo=off</> sets the
10211021
session's value of the <varname>geqo</> parameter to
1022-
<literal>off</>. For a detailed discussion of the available
1022+
<literal>off</>. Spaces within this string are considered to
1023+
separate command-line arguments, unless escaped with a backslash
1024+
(<literal>\</>); write <literal>\\</> to represent a literal
1025+
backslash. For a detailed discussion of the available
10231026
options, consult <xref linkend="runtime-config">.
10241027
</para>
10251028
</listitem>

‎doc/src/sgml/protocol.sgml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4739,7 +4739,10 @@ StartupMessage (F)
47394739
<para>
47404740
Command-line arguments for the backend. (This is
47414741
deprecated in favor of setting individual run-time
4742-
parameters.)
4742+
parameters.) Spaces within this string are
4743+
considered to separate arguments, unless escaped with
4744+
a backslash (<literal>\</>); write <literal>\\</> to
4745+
represent a literal backslash.
47434746
</para>
47444747
</listitem>
47454748
</varlistentry>
@@ -4748,11 +4751,8 @@ StartupMessage (F)
47484751
In addition to the above, any run-time parameter that can be
47494752
set at backend start time might be listed. Such settings
47504753
will be applied during backend start (after parsing the
4751-
command-line options if any). The values will act as
4752-
session defaults. Spaces in option values need to be escaped
4753-
with a backslash (<literal>\</>). A literal backslash can be
4754-
passed by escaping it with another backslash
4755-
(i.e <literal>\\</>).
4754+
command-line arguments if any). The values will act as
4755+
session defaults.
47564756
</para>
47574757
</listitem>
47584758
</varlistentry>

‎doc/src/sgml/ref/postgres-ref.sgml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -284,12 +284,18 @@ PostgreSQL documentation
284284
<term><option>-o <replaceable class="parameter">extra-options</replaceable></option></term>
285285
<listitem>
286286
<para>
287-
The command-line-styleoptions specified in <replaceable
287+
The command-line-stylearguments specified in <replaceable
288288
class="parameter">extra-options</replaceable> are passed to
289289
all server processes started by this
290-
<command>postgres</command> process. If the option string contains
291-
any spaces, the entire string must be quoted; multiple
292-
option invocations are appended.
290+
<command>postgres</command> process.
291+
</para>
292+
293+
<para>
294+
Spaces within <replaceable class="parameter">extra-options</> are
295+
considered to separate arguments, unless escaped with a backslash
296+
(<literal>\</>); write <literal>\\</> to represent a literal
297+
backslash. Multiple arguments can also be specified via multiple
298+
uses of <option>-o</>.
293299
</para>
294300

295301
<para>

‎src/backend/utils/init/postinit.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ InitCommunication(void)
418418
* backslashes, with \\ representing a literal backslash.
419419
*/
420420
void
421-
pg_split_opts(char**argv,int*argcp,char*optstr)
421+
pg_split_opts(char**argv,int*argcp,constchar*optstr)
422422
{
423423
StringInfoDatas;
424424

@@ -438,8 +438,8 @@ pg_split_opts(char **argv, int *argcp, char *optstr)
438438
break;
439439

440440
/*
441-
* Parse a single option + value, stopping at the first space, unless
442-
*it'sescaped.
441+
* Parse a single option, stopping at the first space, unless it's
442+
* escaped.
443443
*/
444444
while (*optstr)
445445
{
@@ -457,10 +457,11 @@ pg_split_opts(char **argv, int *argcp, char *optstr)
457457
optstr++;
458458
}
459459

460-
/* now store the option */
460+
/* now store the optionin the next argv[] position*/
461461
argv[(*argcp)++]=pstrdup(s.data);
462462
}
463-
resetStringInfo(&s);
463+
464+
pfree(s.data);
464465
}
465466

466467
/*

‎src/include/miscadmin.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ extern AuxProcType MyAuxProcType;
408408
*****************************************************************************/
409409

410410
/* in utils/init/postinit.c */
411-
externvoidpg_split_opts(char**argv,int*argcp,char*optstr);
411+
externvoidpg_split_opts(char**argv,int*argcp,constchar*optstr);
412412
externvoidInitializeMaxBackends(void);
413413
externvoidInitPostgres(constchar*in_dbname,Oiddboid,constchar*username,
414414
Oiduseroid,char*out_dbname);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp