Re: Regression test PANICs with master-standby setup on same machine

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: Regression test PANICs with master-standby setup on same machine
Дата
Msg-id 20190424163012.7wzdl6j2v73cufip@alap3.anarazel.de
обсуждение исходный текст
Ответ на Re: Regression test PANICs with master-standby setup on samemachine  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Ответы Re: Regression test PANICs with master-standby setup on samemachine  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Список pgsql-hackers
Hi,

On 2019-04-24 17:02:28 +0900, Kyotaro HORIGUCHI wrote:
> +/*
> + * Check if the path is in the data directory strictly.
> + */
> +static bool
> +is_in_data_directory(const char *path)
> +{
> +    char cwd[MAXPGPATH];
> +    char abspath[MAXPGPATH];
> +    char absdatadir[MAXPGPATH];
> +
> +    getcwd(cwd, MAXPGPATH);
> +    if (chdir(path) < 0)
> +        ereport(ERROR,
> +                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> +                 errmsg("invalid directory \"%s\": %m", path)));
> +
> +    /* getcwd is defined as returning absolute path */
> +    getcwd(abspath, MAXPGPATH);
> +
> +    /* DataDir needs to be canonicalized */
> +    if (chdir(DataDir))
> +        ereport(FATAL,
> +                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> +                 errmsg("could not chdir to the data directory \"%s\": %m",
> +                        DataDir)));
> +    getcwd(absdatadir, MAXPGPATH);
> +
> +    /* this must succeed */
> +    if (chdir(cwd))
> +        ereport(FATAL,
> +                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> +                 errmsg("could not chdir to the current working directory \"%s\": %m",
> +                     cwd)));
> +
> +    return path_is_prefix_of_path(absdatadir, abspath);
> +}

This seems like a bad idea to me. Why don't we just use
make_absolute_path() on the proposed tablespace path, and then check
path_is_prefix_of() or such? Sure, that can be tricked using symlinks
etc, but that's already the case.

Greetings,

Andres Freund



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

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Regression test PANICs with master-standby setup on same machine
Следующее
От: Ashwin Agrawal
Дата:
Сообщение: Re: Regression test PANICs with master-standby setup on same machine