postgres.git / summary / log / commit / refs

commit    c8aab699edd699d3991e56b02ec773f4e9312e68
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Fri Jan 12 04:53:13 2024 +0000
First released in: 17.0, 12.18, 13.14, 14.11, 15.6, 16.2

    pg_ctl: Disable autoruns for cmd.exe on Windows
    
    On Windows, cmd.exe is used to launch the postmaster process to ease its
    redirection setup.  However, cmd.exe may execute other programs at
    startup due to autorun configurations, which could influence the
    postmaster startup.  This patch adds /D flag to the launcher cmd.exe
    command line to disable autorun settings written in the registry.
    
    This was originally applied on HEAD as of 9886744a361b without a
    backpatch, but the patch has survived CI and buildfarm cycles.  I have
    checked that cmd /d exists down to Windows XP, which should make this
    change work correctly in the oldest branches still supported.
    
    Reported-by: Hayato Kuroda
    Author: Kyotaro Horiguchi
    Reviewed-by: Robert Haas, Michael Paquier
    Discussion: https://postgr.es/m/20230922.161551.320043332510268554.horikyota.ntt@gmail.com
    Backpatch-through: 12


src/bin/pg_ctl/pg_ctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index 01b815d4a07..091d584d82a 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -559,11 +559,11 @@ start_postmaster(void) else close(fd); - cmd = psprintf("\"%s\" /C \"\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1\"", + cmd = psprintf("\"%s\" /D /C \"\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1\"", comspec, exec_path, pgdata_opt, post_opts, DEVNULL, log_file); } else - cmd = psprintf("\"%s\" /C \"\"%s\" %s%s < \"%s\" 2>&1\"", + cmd = psprintf("\"%s\" /D /C \"\"%s\" %s%s < \"%s\" 2>&1\"", comspec, exec_path, pgdata_opt, post_opts, DEVNULL); if (!CreateRestrictedProcess(cmd, &pi, false)) [parent: bfd28bb07a1f]