Read until EOF vice stat-reported size in read_binary_file
authorJoe Conway <[email protected]>
Sat, 4 Jul 2020 10:28:44 +0000 (06:28 -0400)
committerJoe Conway <[email protected]>
Sat, 4 Jul 2020 10:28:44 +0000 (06:28 -0400)
commit015e899a7a671a42f11468afb12e1415415a1da8
tree8daf90a9ddb806921ed06e3cf247d64c50541f0a
parent153c14cdd714381b186d3e3a2272d29f4717be9e
Read until EOF vice stat-reported size in read_binary_file

read_binary_file(), used by SQL functions pg_read_file() and friends,
uses stat to determine file length to read, when not passed an explicit
length as an argument. This is problematic, for example, if the file
being read is a virtual file with a stat-reported length of zero.
Arrange to read until EOF, or StringInfo data string lenth limit, is
reached instead.

Original complaint and patch by me, with significant review, corrections,
advice, and code optimizations by Tom Lane. Backpatched to v11. Prior to
that only paths relative to the data and log dirs were allowed for files,
so no "zero length" files were reachable anyway.

Reviewed-By: Tom Lane
Discussion: https://postgr.es/m/flat/969b8d82-5bb2-5fa8-4eb1-f0e685c5d736%40joeconway.com
Backpatch-through: 11
contrib/adminpack/expected/adminpack.out
src/backend/utils/adt/genfile.c