mirror of
https://github.com/postgres/postgres.git
synced 2026-04-05 01:07:27 -04:00
Fix finalization of decompressor astreamers.
Send the correct amount of data to the next astreamer, not the whole allocated buffer size. This bug escaped detection because in present uses the next astreamer is always a tar-file parser which is insensitive to trailing garbage. But that may not be true in future uses. Author: Andrew Dunstan <andrew@dunslane.net> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/2178517.1774064942@sss.pgh.pa.us Backpatch-through: 15
This commit is contained in:
parent
876fa84a27
commit
6ccfc44922
3 changed files with 11 additions and 9 deletions
|
|
@ -323,10 +323,11 @@ bbstreamer_gzip_decompressor_finalize(bbstreamer *streamer)
|
|||
* End of the stream, if there is some pending data in output buffers then
|
||||
* we must forward it to next streamer.
|
||||
*/
|
||||
bbstreamer_content(mystreamer->base.bbs_next, NULL,
|
||||
mystreamer->base.bbs_buffer.data,
|
||||
mystreamer->base.bbs_buffer.maxlen,
|
||||
BBSTREAMER_UNKNOWN);
|
||||
if (mystreamer->bytes_written > 0)
|
||||
bbstreamer_content(mystreamer->base.bbs_next, NULL,
|
||||
mystreamer->base.bbs_buffer.data,
|
||||
mystreamer->bytes_written,
|
||||
BBSTREAMER_UNKNOWN);
|
||||
|
||||
bbstreamer_finalize(mystreamer->base.bbs_next);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -395,10 +395,11 @@ bbstreamer_lz4_decompressor_finalize(bbstreamer *streamer)
|
|||
* End of the stream, if there is some pending data in output buffers then
|
||||
* we must forward it to next streamer.
|
||||
*/
|
||||
bbstreamer_content(mystreamer->base.bbs_next, NULL,
|
||||
mystreamer->base.bbs_buffer.data,
|
||||
mystreamer->base.bbs_buffer.maxlen,
|
||||
BBSTREAMER_UNKNOWN);
|
||||
if (mystreamer->bytes_written > 0)
|
||||
bbstreamer_content(mystreamer->base.bbs_next, NULL,
|
||||
mystreamer->base.bbs_buffer.data,
|
||||
mystreamer->bytes_written,
|
||||
BBSTREAMER_UNKNOWN);
|
||||
|
||||
bbstreamer_finalize(mystreamer->base.bbs_next);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -343,7 +343,7 @@ bbstreamer_zstd_decompressor_finalize(bbstreamer *streamer)
|
|||
if (mystreamer->zstd_outBuf.pos > 0)
|
||||
bbstreamer_content(mystreamer->base.bbs_next, NULL,
|
||||
mystreamer->base.bbs_buffer.data,
|
||||
mystreamer->base.bbs_buffer.maxlen,
|
||||
mystreamer->zstd_outBuf.pos,
|
||||
BBSTREAMER_UNKNOWN);
|
||||
|
||||
bbstreamer_finalize(mystreamer->base.bbs_next);
|
||||
|
|
|
|||
Loading…
Reference in a new issue