mirror of
https://github.com/postgres/postgres.git
synced 2025-05-06 19:59:18 +03:00
initdb -S should now have an explicit check that $PGDATA is valid.
The fsync code from the backend essentially assumes that somebody's already validated PGDATA, at least to the extent of it being a readable directory. That's safe enough for initdb's normal code path too, but "initdb -S" doesn't have any other processing at all that touches the target directory. To have reasonable error-case behavior, add a pg_check_dir call. Per gripe from Peter E.
This commit is contained in:
parent
35dd1b51f2
commit
c2b68b1f7d
@ -3650,10 +3650,19 @@ main(int argc, char *argv[])
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we only need to fsync, just to it and exit */
|
/* If we only need to fsync, just do it and exit */
|
||||||
if (sync_only)
|
if (sync_only)
|
||||||
{
|
{
|
||||||
setup_pgdata();
|
setup_pgdata();
|
||||||
|
|
||||||
|
/* must check that directory is readable */
|
||||||
|
if (pg_check_dir(pg_data) <= 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr, _("%s: could not access directory \"%s\": %s\n"),
|
||||||
|
progname, pg_data, strerror(errno));
|
||||||
|
exit_nicely();
|
||||||
|
}
|
||||||
|
|
||||||
fsync_pgdata();
|
fsync_pgdata();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user