Skip to content

Commit e2558e0

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 0901dba commit e2558e0

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
@@ -936,7 +936,7 @@ get_bin_version(ClusterInfo *cluster)
936936
int pre_dot,
937937
post_dot;
938938

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

941941
if ((output = popen(cmd, "r")) == NULL ||
942942
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
@@ -1247,7 +1247,7 @@ bootstrap_template1(void)
12471247
unsetenv("PGCLIENTENCODING");
12481248

12491249
snprintf(cmd, sizeof(cmd),
1250-
"\"%s\" --boot -x1 %s %s",
1250+
SYSTEMQUOTE "\"%s\" --boot -x1 %s %s" SYSTEMQUOTE,
12511251
backend_exec, boot_options, talkargs);
12521252

12531253
PG_CMD_OPEN;
@@ -1286,7 +1286,7 @@ setup_auth(void)
12861286
fflush(stdout);
12871287

12881288
snprintf(cmd, sizeof(cmd),
1289-
"\"%s\" %s template1 >%s",
1289+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
12901290
backend_exec, backend_options,
12911291
DEVNULL);
12921292

@@ -1364,7 +1364,7 @@ get_set_pwd(void)
13641364
fflush(stdout);
13651365

13661366
snprintf(cmd, sizeof(cmd),
1367-
"\"%s\" %s template1 >%s",
1367+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
13681368
backend_exec, backend_options,
13691369
DEVNULL);
13701370

@@ -1464,7 +1464,7 @@ setup_depend(void)
14641464
fflush(stdout);
14651465

14661466
snprintf(cmd, sizeof(cmd),
1467-
"\"%s\" %s template1 >%s",
1467+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
14681468
backend_exec, backend_options,
14691469
DEVNULL);
14701470

@@ -1497,7 +1497,7 @@ setup_sysviews(void)
14971497
* We use -j here to avoid backslashing stuff in system_views.sql
14981498
*/
14991499
snprintf(cmd, sizeof(cmd),
1500-
"\"%s\" %s -j template1 >%s",
1500+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
15011501
backend_exec, backend_options,
15021502
DEVNULL);
15031503

@@ -1528,7 +1528,7 @@ setup_description(void)
15281528
fflush(stdout);
15291529

15301530
snprintf(cmd, sizeof(cmd),
1531-
"\"%s\" %s template1 >%s",
1531+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
15321532
backend_exec, backend_options,
15331533
DEVNULL);
15341534

@@ -1635,7 +1635,7 @@ setup_collation(void)
16351635

16361636
#if defined(HAVE_LOCALE_T) && !defined(WIN32)
16371637
snprintf(cmd, sizeof(cmd),
1638-
"\"%s\" %s template1 >%s",
1638+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
16391639
backend_exec, backend_options,
16401640
DEVNULL);
16411641

@@ -1774,7 +1774,7 @@ setup_conversion(void)
17741774
fflush(stdout);
17751775

17761776
snprintf(cmd, sizeof(cmd),
1777-
"\"%s\" %s template1 >%s",
1777+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
17781778
backend_exec, backend_options,
17791779
DEVNULL);
17801780

@@ -1812,7 +1812,7 @@ setup_dictionary(void)
18121812
* We use -j here to avoid backslashing stuff
18131813
*/
18141814
snprintf(cmd, sizeof(cmd),
1815-
"\"%s\" %s -j template1 >%s",
1815+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
18161816
backend_exec, backend_options,
18171817
DEVNULL);
18181818

@@ -1863,7 +1863,7 @@ setup_privileges(void)
18631863
fflush(stdout);
18641864

18651865
snprintf(cmd, sizeof(cmd),
1866-
"\"%s\" %s template1 >%s",
1866+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
18671867
backend_exec, backend_options,
18681868
DEVNULL);
18691869

@@ -1926,7 +1926,7 @@ setup_schema(void)
19261926
* We use -j here to avoid backslashing stuff in information_schema.sql
19271927
*/
19281928
snprintf(cmd, sizeof(cmd),
1929-
"\"%s\" %s -j template1 >%s",
1929+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
19301930
backend_exec, backend_options,
19311931
DEVNULL);
19321932

@@ -1943,7 +1943,7 @@ setup_schema(void)
19431943
PG_CMD_CLOSE;
19441944

19451945
snprintf(cmd, sizeof(cmd),
1946-
"\"%s\" %s template1 >%s",
1946+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
19471947
backend_exec, backend_options,
19481948
DEVNULL);
19491949

@@ -1977,7 +1977,7 @@ load_plpgsql(void)
19771977
fflush(stdout);
19781978

19791979
snprintf(cmd, sizeof(cmd),
1980-
"\"%s\" %s template1 >%s",
1980+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
19811981
backend_exec, backend_options,
19821982
DEVNULL);
19831983

@@ -2002,7 +2002,7 @@ vacuum_db(void)
20022002
fflush(stdout);
20032003

20042004
snprintf(cmd, sizeof(cmd),
2005-
"\"%s\" %s template1 >%s",
2005+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
20062006
backend_exec, backend_options,
20072007
DEVNULL);
20082008

@@ -2058,7 +2058,7 @@ make_template0(void)
20582058
fflush(stdout);
20592059

20602060
snprintf(cmd, sizeof(cmd),
2061-
"\"%s\" %s template1 >%s",
2061+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
20622062
backend_exec, backend_options,
20632063
DEVNULL);
20642064

@@ -2090,7 +2090,7 @@ make_postgres(void)
20902090
fflush(stdout);
20912091

20922092
snprintf(cmd, sizeof(cmd),
2093-
"\"%s\" %s template1 >%s",
2093+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
20942094
backend_exec, backend_options,
20952095
DEVNULL);
20962096

0 commit comments

Comments
 (0)