pgsql: Read until EOF vice stat-reported size in read_binary_file - Mailing list pgsql-committers

From Joe Conway
Subject pgsql: Read until EOF vice stat-reported size in read_binary_file
Date
Msg-id E1jrfR6-0000hN-J4@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
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

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/c2cdaf0cb912fa24ac56170c7c47a2fc398e2516

Modified Files
--------------
contrib/adminpack/expected/adminpack.out |  4 +-
src/backend/utils/adt/genfile.c          | 91 ++++++++++++++++++++++----------
2 files changed, 66 insertions(+), 29 deletions(-)


pgsql-committers by date:

Previous
From: Joe Conway
Date:
Subject: pgsql: Read until EOF vice stat-reported size in read_binary_file
Next
From: Joe Conway
Date:
Subject: pgsql: Fix "ignoring return value" complaints from commit 96d1f423f9