aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/flashsv.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2022-05-23 01:16:16 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2022-07-07 21:52:52 +0200
commit8f6432cd77aa832727edf8f225c0f9016eab4085 (patch)
tree7b296e440be143153eba5d3a9a9b77540ccd11df /libavcodec/flashsv.c
parent7796d740bde81af73c5914534f96dfd90db7260f (diff)
downloadffmpeg-8f6432cd77aa832727edf8f225c0f9016eab4085.tar.gz
avcodec/flashsv: Check inflate() for failure
Fixes: CID1047223 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/flashsv.c')
-rw-r--r--libavcodec/flashsv.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/flashsv.c b/libavcodec/flashsv.c
index 0982161d49..d8943d9cf8 100644
--- a/libavcodec/flashsv.c
+++ b/libavcodec/flashsv.c
@@ -149,7 +149,9 @@ static int flashsv2_prime(FlashSVContext *s, const uint8_t *src, int size)
zstream->avail_in = size;
zstream->next_out = data;
zstream->avail_out = s->block_size * 3;
- inflate(zstream, Z_SYNC_FLUSH);
+ zret = inflate(zstream, Z_SYNC_FLUSH);
+ if (zret != Z_OK && zret != Z_STREAM_END)
+ return AVERROR_UNKNOWN;
remaining = s->block_size * 3 - zstream->avail_out;
if ((zret = inflateReset(zstream)) != Z_OK) {
@@ -165,7 +167,9 @@ static int flashsv2_prime(FlashSVContext *s, const uint8_t *src, int size)
* out of the output from above. See section 3.2.4 of RFC 1951. */
zstream->next_in = zlib_header;
zstream->avail_in = sizeof(zlib_header);
- inflate(zstream, Z_SYNC_FLUSH);
+ zret = inflate(zstream, Z_SYNC_FLUSH);
+ if (zret != Z_OK)
+ return AVERROR_UNKNOWN;
while (remaining > 0) {
unsigned block_size = FFMIN(UINT16_MAX, remaining);
uint8_t header[5];