]> granicus.if.org Git - postgresql/commit
Fix assorted issues in pg_ctl's pgwin32_CommandLine().
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Nov 2013 23:34:18 +0000 (18:34 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Nov 2013 23:34:18 +0000 (18:34 -0500)
commit8c72b20e39a2f6e788020f9c6750e2c0a9bbb235
treebf4dc62bc772fa1437751ca5812fed6cc5c2bd73
parentbf0d21e6172ba049a51016215e31b5d198ca9abf
Fix assorted issues in pg_ctl's pgwin32_CommandLine().

Ensure that the invocation command for postgres or pg_ctl runservice
double-quotes the executable's pathname; failure to do this leads to
trouble when the path contains spaces.

Also, ensure that the path ends in ".exe" in both cases and uses
backslashes rather than slashes as directory separators.  The latter issue
is reported to confuse some third-party tools such as Symantec Backup Exec.

Also, rewrite the function to avoid buffer overrun issues by using a
PQExpBuffer instead of a fixed-size static buffer.  Combinations of
very long executable pathnames and very long data directory pathnames
could have caused trouble before, for example.

Back-patch to all active branches, since this code has been like this
for a long while.

Naoya Anzai and Tom Lane, reviewed by Rajeev Rastogi
src/bin/pg_ctl/pg_ctl.c