Skip to content

Commit 503de54

Browse files
committed
Add missing SYSTEMQUOTEs
Some popen() calls were missing SYSTEMQUOTEs, which caused initdb and pg_upgrade to fail on Windows, if the installation path contained both spaces and @ signs. Patch by Nikhil Deshpande. Backpatch to all supported versions.
1 parent d0765d5 commit 503de54

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

contrib/pg_upgrade/check.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -970,7 +970,7 @@ get_bin_version(ClusterInfo *cluster)
970970
int pre_dot,
971971
post_dot;
972972

973-
snprintf(cmd, sizeof(cmd), "\"%s/pg_ctl\" --version", cluster->bindir);
973+
snprintf(cmd, sizeof(cmd), SYSTEMQUOTE "\"%s/pg_ctl\" --version" SYSTEMQUOTE, cluster->bindir);
974974

975975
if ((output = popen(cmd, "r")) == NULL ||
976976
fgets(cmd_output, sizeof(cmd_output), output) == NULL)

src/bin/initdb/initdb.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,7 +1503,7 @@ bootstrap_template1(void)
15031503
unsetenv("PGCLIENTENCODING");
15041504

15051505
snprintf(cmd, sizeof(cmd),
1506-
"\"%s\" --boot -x1 %s %s %s",
1506+
SYSTEMQUOTE "\"%s\" --boot -x1 %s %s %s" SYSTEMQUOTE,
15071507
backend_exec,
15081508
data_checksums ? "-k" : "",
15091509
boot_options, talkargs);
@@ -1544,7 +1544,7 @@ setup_auth(void)
15441544
fflush(stdout);
15451545

15461546
snprintf(cmd, sizeof(cmd),
1547-
"\"%s\" %s template1 >%s",
1547+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
15481548
backend_exec, backend_options,
15491549
DEVNULL);
15501550

@@ -1622,7 +1622,7 @@ get_set_pwd(void)
16221622
fflush(stdout);
16231623

16241624
snprintf(cmd, sizeof(cmd),
1625-
"\"%s\" %s template1 >%s",
1625+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
16261626
backend_exec, backend_options,
16271627
DEVNULL);
16281628

@@ -1722,7 +1722,7 @@ setup_depend(void)
17221722
fflush(stdout);
17231723

17241724
snprintf(cmd, sizeof(cmd),
1725-
"\"%s\" %s template1 >%s",
1725+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
17261726
backend_exec, backend_options,
17271727
DEVNULL);
17281728

@@ -1755,7 +1755,7 @@ setup_sysviews(void)
17551755
* We use -j here to avoid backslashing stuff in system_views.sql
17561756
*/
17571757
snprintf(cmd, sizeof(cmd),
1758-
"\"%s\" %s -j template1 >%s",
1758+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
17591759
backend_exec, backend_options,
17601760
DEVNULL);
17611761

@@ -1786,7 +1786,7 @@ setup_description(void)
17861786
fflush(stdout);
17871787

17881788
snprintf(cmd, sizeof(cmd),
1789-
"\"%s\" %s template1 >%s",
1789+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
17901790
backend_exec, backend_options,
17911791
DEVNULL);
17921792

@@ -1893,7 +1893,7 @@ setup_collation(void)
18931893

18941894
#if defined(HAVE_LOCALE_T) && !defined(WIN32)
18951895
snprintf(cmd, sizeof(cmd),
1896-
"\"%s\" %s template1 >%s",
1896+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
18971897
backend_exec, backend_options,
18981898
DEVNULL);
18991899

@@ -2038,7 +2038,7 @@ setup_conversion(void)
20382038
fflush(stdout);
20392039

20402040
snprintf(cmd, sizeof(cmd),
2041-
"\"%s\" %s template1 >%s",
2041+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
20422042
backend_exec, backend_options,
20432043
DEVNULL);
20442044

@@ -2076,7 +2076,7 @@ setup_dictionary(void)
20762076
* We use -j here to avoid backslashing stuff
20772077
*/
20782078
snprintf(cmd, sizeof(cmd),
2079-
"\"%s\" %s -j template1 >%s",
2079+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
20802080
backend_exec, backend_options,
20812081
DEVNULL);
20822082

@@ -2127,7 +2127,7 @@ setup_privileges(void)
21272127
fflush(stdout);
21282128

21292129
snprintf(cmd, sizeof(cmd),
2130-
"\"%s\" %s template1 >%s",
2130+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
21312131
backend_exec, backend_options,
21322132
DEVNULL);
21332133

@@ -2190,7 +2190,7 @@ setup_schema(void)
21902190
* We use -j here to avoid backslashing stuff in information_schema.sql
21912191
*/
21922192
snprintf(cmd, sizeof(cmd),
2193-
"\"%s\" %s -j template1 >%s",
2193+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
21942194
backend_exec, backend_options,
21952195
DEVNULL);
21962196

@@ -2207,7 +2207,7 @@ setup_schema(void)
22072207
PG_CMD_CLOSE;
22082208

22092209
snprintf(cmd, sizeof(cmd),
2210-
"\"%s\" %s template1 >%s",
2210+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
22112211
backend_exec, backend_options,
22122212
DEVNULL);
22132213

@@ -2241,7 +2241,7 @@ load_plpgsql(void)
22412241
fflush(stdout);
22422242

22432243
snprintf(cmd, sizeof(cmd),
2244-
"\"%s\" %s template1 >%s",
2244+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
22452245
backend_exec, backend_options,
22462246
DEVNULL);
22472247

@@ -2266,7 +2266,7 @@ vacuum_db(void)
22662266
fflush(stdout);
22672267

22682268
snprintf(cmd, sizeof(cmd),
2269-
"\"%s\" %s template1 >%s",
2269+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
22702270
backend_exec, backend_options,
22712271
DEVNULL);
22722272

@@ -2322,7 +2322,7 @@ make_template0(void)
23222322
fflush(stdout);
23232323

23242324
snprintf(cmd, sizeof(cmd),
2325-
"\"%s\" %s template1 >%s",
2325+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
23262326
backend_exec, backend_options,
23272327
DEVNULL);
23282328

@@ -2354,7 +2354,7 @@ make_postgres(void)
23542354
fflush(stdout);
23552355

23562356
snprintf(cmd, sizeof(cmd),
2357-
"\"%s\" %s template1 >%s",
2357+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
23582358
backend_exec, backend_options,
23592359
DEVNULL);
23602360

0 commit comments

Comments
 (0)