diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2024-05-16 21:16:00 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2024-06-02 22:31:41 +0200 |
commit | d741638042d827aed994b819857d6587121627ab (patch) | |
tree | da8d03a432f7c7d126172ec607dc64480cdfc0c9 /libavcodec | |
parent | e5098589b0ca74b3f52e09bae277306a1fc0cd43 (diff) | |
download | ffmpeg-d741638042d827aed994b819857d6587121627ab.tar.gz |
avcodec/scpr3: Check add_dec() for failure
Fixes: CID1441459 Improper use of negative value
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/scpr3.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/scpr3.c b/libavcodec/scpr3.c index 5271717ac7..e91c198308 100644 --- a/libavcodec/scpr3.c +++ b/libavcodec/scpr3.c @@ -465,6 +465,8 @@ static int decode_adaptive6(PixelModel3 *m, uint32_t code, uint32_t *value, return 0; grow_dec(m); c = add_dec(m, q, g, f); + if (c < 0) + return AVERROR_INVALIDDATA; } incr_cntdec(m, c); @@ -868,11 +870,11 @@ static int decode_unit3(SCPRContext *s, PixelModel3 *m, uint32_t code, uint32_t sync_code3(gb, rc); break; case 6: - if (!decode_adaptive6(m, code, value, &a, &b)) { + ret = decode_adaptive6(m, code, value, &a, &b); + if (!ret) ret = update_model6_to_7(m); - if (ret < 0) - return AVERROR_INVALIDDATA; - } + if (ret < 0) + return ret; decode3(gb, rc, a, b); sync_code3(gb, rc); break; |