Re: [PATCH] O_CLOEXEC not honored on Windows - handle inheritance chain

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [PATCH] O_CLOEXEC not honored on Windows - handle inheritance chain
Дата
Msg-id 1086088.1765593851@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: [PATCH] O_CLOEXEC not honored on Windows - handle inheritance chain  (Thomas Munro <thomas.munro@gmail.com>)
Ответы Re: [PATCH] O_CLOEXEC not honored on Windows - handle inheritance chain
Список pgsql-hackers
Thomas Munro <thomas.munro@gmail.com> writes:
> Hearing nothing, pushed.

fairywren is unimpressed:

../pgsql/src/test/modules/test_cloexec/test_cloexec.c: In function 'run_parent_tests':
../pgsql/src/test/modules/test_cloexec/test_cloexec.c:137:29: warning: unused variable 'space_pos' [-Wunused-variable]
  137 |                 char       *space_pos;
      |                             ^~~~~~~~~

It's right, but it seems to me that this stanza needs more help than
that:

    /*
     * Spawn child process with bInheritHandles=TRUE, passing handle values as
     * hex strings
     */
    snprintf(cmdline, sizeof(cmdline), "\"%s\" %p %p",
             GetCommandLine(), h1, h2);

    /*
     * Find the actual executable path by removing any arguments from
     * GetCommandLine().
     */
    {
        char        exe_path[MAX_PATH];
        char       *space_pos;

        GetModuleFileName(NULL, exe_path, sizeof(exe_path));
        snprintf(cmdline, sizeof(cmdline), "\"%s\" %p %p",
                 exe_path, h1, h2);
    }

What is the point of that first snprintf(cmdline, ...), when its
result is guaranteed to be overwritten just below?

I'm also dubious about using MAX_PATH here; see the commentary
about MAXPGPATH in pg_config_manual.h.  Also, what's the point of
using MAX_PATH when the result is going to be transferred into
cmdline (with a hardwired size of 1024)?

            regards, tom lane



В списке pgsql-hackers по дате отправления: