summaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gist.c
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2019-11-26 13:32:52 +0900
committerMichael Paquier <michael@paquier.xyz>2019-11-26 13:32:52 +0900
commit12198239c0a5122e29619d50f76f89adc5bc7ade (patch)
tree8fb1442326417974c41009348edff8662f3a6d87 /src/backend/access/gist/gist.c
parent080313f8296fb0bcc74bd70fc8e15cd64f45945e (diff)
downloadpostgresql-12198239c0a5122e29619d50f76f89adc5bc7ade.tar.gz
Add safeguards for pg_fsync() called with incorrectly-opened fds
On some platforms, fsync() returns EBADFD when opening a file descriptor with O_RDONLY (read-only), leading ultimately now to a PANIC to prevent data corruption. This commit adds a new sanity check in pg_fsync() based on fcntl() to make sure that we don't repeat again mistakes with incorrectly-set file descriptors so as problems are detected at an early stage. Without that, such errors could only be detected after running Postgres on a specific supported platform for the culprit code path, which could take some time before being found. b8e19b93 was a fix for such a problem, which got undetected for more than 5 years, and a586cc4b fixed another similar issue. Note that the new check added works as well when fsync=off is configured, so as all regression tests would detect problems as long as assertions are enabled. fcntl() being not available on Windows, the new checks do not happen there. Author: Michael Paquier Reviewed-by: Mark Dilger Discussion: https://postgr.es/m/20191009062640.GB21379@paquier.xyz
Diffstat (limited to 'src/backend/access/gist/gist.c')
0 files changed, 0 insertions, 0 deletions