Skip to content

Commit 8a90a39

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 150a44e commit 8a90a39

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
@@ -961,7 +961,7 @@ get_bin_version(ClusterInfo *cluster)
961961
int pre_dot,
962962
post_dot;
963963

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

966966
if ((output = popen(cmd, "r")) == NULL ||
967967
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
@@ -1445,7 +1445,7 @@ bootstrap_template1(void)
14451445
unsetenv("PGCLIENTENCODING");
14461446

14471447
snprintf(cmd, sizeof(cmd),
1448-
"\"%s\" --boot -x1 %s %s %s",
1448+
SYSTEMQUOTE "\"%s\" --boot -x1 %s %s %s" SYSTEMQUOTE,
14491449
backend_exec,
14501450
data_checksums ? "-k" : "",
14511451
boot_options, talkargs);
@@ -1486,7 +1486,7 @@ setup_auth(void)
14861486
fflush(stdout);
14871487

14881488
snprintf(cmd, sizeof(cmd),
1489-
"\"%s\" %s template1 >%s",
1489+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
14901490
backend_exec, backend_options,
14911491
DEVNULL);
14921492

@@ -1564,7 +1564,7 @@ get_set_pwd(void)
15641564
fflush(stdout);
15651565

15661566
snprintf(cmd, sizeof(cmd),
1567-
"\"%s\" %s template1 >%s",
1567+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
15681568
backend_exec, backend_options,
15691569
DEVNULL);
15701570

@@ -1664,7 +1664,7 @@ setup_depend(void)
16641664
fflush(stdout);
16651665

16661666
snprintf(cmd, sizeof(cmd),
1667-
"\"%s\" %s template1 >%s",
1667+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
16681668
backend_exec, backend_options,
16691669
DEVNULL);
16701670

@@ -1697,7 +1697,7 @@ setup_sysviews(void)
16971697
* We use -j here to avoid backslashing stuff in system_views.sql
16981698
*/
16991699
snprintf(cmd, sizeof(cmd),
1700-
"\"%s\" %s -j template1 >%s",
1700+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
17011701
backend_exec, backend_options,
17021702
DEVNULL);
17031703

@@ -1728,7 +1728,7 @@ setup_description(void)
17281728
fflush(stdout);
17291729

17301730
snprintf(cmd, sizeof(cmd),
1731-
"\"%s\" %s template1 >%s",
1731+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
17321732
backend_exec, backend_options,
17331733
DEVNULL);
17341734

@@ -1835,7 +1835,7 @@ setup_collation(void)
18351835

18361836
#if defined(HAVE_LOCALE_T) && !defined(WIN32)
18371837
snprintf(cmd, sizeof(cmd),
1838-
"\"%s\" %s template1 >%s",
1838+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
18391839
backend_exec, backend_options,
18401840
DEVNULL);
18411841

@@ -1974,7 +1974,7 @@ setup_conversion(void)
19741974
fflush(stdout);
19751975

19761976
snprintf(cmd, sizeof(cmd),
1977-
"\"%s\" %s template1 >%s",
1977+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
19781978
backend_exec, backend_options,
19791979
DEVNULL);
19801980

@@ -2012,7 +2012,7 @@ setup_dictionary(void)
20122012
* We use -j here to avoid backslashing stuff
20132013
*/
20142014
snprintf(cmd, sizeof(cmd),
2015-
"\"%s\" %s -j template1 >%s",
2015+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
20162016
backend_exec, backend_options,
20172017
DEVNULL);
20182018

@@ -2063,7 +2063,7 @@ setup_privileges(void)
20632063
fflush(stdout);
20642064

20652065
snprintf(cmd, sizeof(cmd),
2066-
"\"%s\" %s template1 >%s",
2066+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
20672067
backend_exec, backend_options,
20682068
DEVNULL);
20692069

@@ -2126,7 +2126,7 @@ setup_schema(void)
21262126
* We use -j here to avoid backslashing stuff in information_schema.sql
21272127
*/
21282128
snprintf(cmd, sizeof(cmd),
2129-
"\"%s\" %s -j template1 >%s",
2129+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
21302130
backend_exec, backend_options,
21312131
DEVNULL);
21322132

@@ -2143,7 +2143,7 @@ setup_schema(void)
21432143
PG_CMD_CLOSE;
21442144

21452145
snprintf(cmd, sizeof(cmd),
2146-
"\"%s\" %s template1 >%s",
2146+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
21472147
backend_exec, backend_options,
21482148
DEVNULL);
21492149

@@ -2177,7 +2177,7 @@ load_plpgsql(void)
21772177
fflush(stdout);
21782178

21792179
snprintf(cmd, sizeof(cmd),
2180-
"\"%s\" %s template1 >%s",
2180+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
21812181
backend_exec, backend_options,
21822182
DEVNULL);
21832183

@@ -2202,7 +2202,7 @@ vacuum_db(void)
22022202
fflush(stdout);
22032203

22042204
snprintf(cmd, sizeof(cmd),
2205-
"\"%s\" %s template1 >%s",
2205+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
22062206
backend_exec, backend_options,
22072207
DEVNULL);
22082208

@@ -2258,7 +2258,7 @@ make_template0(void)
22582258
fflush(stdout);
22592259

22602260
snprintf(cmd, sizeof(cmd),
2261-
"\"%s\" %s template1 >%s",
2261+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
22622262
backend_exec, backend_options,
22632263
DEVNULL);
22642264

@@ -2290,7 +2290,7 @@ make_postgres(void)
22902290
fflush(stdout);
22912291

22922292
snprintf(cmd, sizeof(cmd),
2293-
"\"%s\" %s template1 >%s",
2293+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
22942294
backend_exec, backend_options,
22952295
DEVNULL);
22962296

0 commit comments

Comments
 (0)