Skip to content

Commit 94095e3

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 9bc70b1 commit 94095e3

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
@@ -810,7 +810,7 @@ get_bin_version(ClusterInfo *cluster)
810810
FILE *output;
811811
int pre_dot, post_dot;
812812

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

815815
if ((output = popen(cmd, "r")) == NULL)
816816
pg_log(PG_FATAL, "Could not get pg_ctl version data: %s\n",

src/bin/initdb/initdb.c

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

11941194
snprintf(cmd, sizeof(cmd),
1195-
"\"%s\" --boot -x1 %s %s",
1195+
SYSTEMQUOTE "\"%s\" --boot -x1 %s %s" SYSTEMQUOTE,
11961196
backend_exec, boot_options, talkargs);
11971197

11981198
PG_CMD_OPEN;
@@ -1231,7 +1231,7 @@ setup_auth(void)
12311231
fflush(stdout);
12321232

12331233
snprintf(cmd, sizeof(cmd),
1234-
"\"%s\" %s template1 >%s",
1234+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
12351235
backend_exec, backend_options,
12361236
DEVNULL);
12371237

@@ -1309,7 +1309,7 @@ get_set_pwd(void)
13091309
fflush(stdout);
13101310

13111311
snprintf(cmd, sizeof(cmd),
1312-
"\"%s\" %s template1 >%s",
1312+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
13131313
backend_exec, backend_options,
13141314
DEVNULL);
13151315

@@ -1409,7 +1409,7 @@ setup_depend(void)
14091409
fflush(stdout);
14101410

14111411
snprintf(cmd, sizeof(cmd),
1412-
"\"%s\" %s template1 >%s",
1412+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
14131413
backend_exec, backend_options,
14141414
DEVNULL);
14151415

@@ -1442,7 +1442,7 @@ setup_sysviews(void)
14421442
* We use -j here to avoid backslashing stuff in system_views.sql
14431443
*/
14441444
snprintf(cmd, sizeof(cmd),
1445-
"\"%s\" %s -j template1 >%s",
1445+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
14461446
backend_exec, backend_options,
14471447
DEVNULL);
14481448

@@ -1473,7 +1473,7 @@ setup_description(void)
14731473
fflush(stdout);
14741474

14751475
snprintf(cmd, sizeof(cmd),
1476-
"\"%s\" %s template1 >%s",
1476+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
14771477
backend_exec, backend_options,
14781478
DEVNULL);
14791479

@@ -1580,7 +1580,7 @@ setup_collation(void)
15801580

15811581
#if defined(HAVE_LOCALE_T) && !defined(WIN32)
15821582
snprintf(cmd, sizeof(cmd),
1583-
"\"%s\" %s template1 >%s",
1583+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
15841584
backend_exec, backend_options,
15851585
DEVNULL);
15861586

@@ -1719,7 +1719,7 @@ setup_conversion(void)
17191719
fflush(stdout);
17201720

17211721
snprintf(cmd, sizeof(cmd),
1722-
"\"%s\" %s template1 >%s",
1722+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
17231723
backend_exec, backend_options,
17241724
DEVNULL);
17251725

@@ -1757,7 +1757,7 @@ setup_dictionary(void)
17571757
* We use -j here to avoid backslashing stuff
17581758
*/
17591759
snprintf(cmd, sizeof(cmd),
1760-
"\"%s\" %s -j template1 >%s",
1760+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
17611761
backend_exec, backend_options,
17621762
DEVNULL);
17631763

@@ -1808,7 +1808,7 @@ setup_privileges(void)
18081808
fflush(stdout);
18091809

18101810
snprintf(cmd, sizeof(cmd),
1811-
"\"%s\" %s template1 >%s",
1811+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
18121812
backend_exec, backend_options,
18131813
DEVNULL);
18141814

@@ -1871,7 +1871,7 @@ setup_schema(void)
18711871
* We use -j here to avoid backslashing stuff in information_schema.sql
18721872
*/
18731873
snprintf(cmd, sizeof(cmd),
1874-
"\"%s\" %s -j template1 >%s",
1874+
SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
18751875
backend_exec, backend_options,
18761876
DEVNULL);
18771877

@@ -1888,7 +1888,7 @@ setup_schema(void)
18881888
PG_CMD_CLOSE;
18891889

18901890
snprintf(cmd, sizeof(cmd),
1891-
"\"%s\" %s template1 >%s",
1891+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
18921892
backend_exec, backend_options,
18931893
DEVNULL);
18941894

@@ -1922,7 +1922,7 @@ load_plpgsql(void)
19221922
fflush(stdout);
19231923

19241924
snprintf(cmd, sizeof(cmd),
1925-
"\"%s\" %s template1 >%s",
1925+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
19261926
backend_exec, backend_options,
19271927
DEVNULL);
19281928

@@ -1947,7 +1947,7 @@ vacuum_db(void)
19471947
fflush(stdout);
19481948

19491949
snprintf(cmd, sizeof(cmd),
1950-
"\"%s\" %s template1 >%s",
1950+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
19511951
backend_exec, backend_options,
19521952
DEVNULL);
19531953

@@ -2003,7 +2003,7 @@ make_template0(void)
20032003
fflush(stdout);
20042004

20052005
snprintf(cmd, sizeof(cmd),
2006-
"\"%s\" %s template1 >%s",
2006+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
20072007
backend_exec, backend_options,
20082008
DEVNULL);
20092009

@@ -2035,7 +2035,7 @@ make_postgres(void)
20352035
fflush(stdout);
20362036

20372037
snprintf(cmd, sizeof(cmd),
2038-
"\"%s\" %s template1 >%s",
2038+
SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
20392039
backend_exec, backend_options,
20402040
DEVNULL);
20412041

0 commit comments

Comments
 (0)