From 2e6b53db41230ea0a5fca0c669aed22bf7384b94 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 25 Mar 2026 01:25:40 +0100 Subject: [PATCH] avcodec/alsdec: do not set nbits invalidly note that the spec actually disallows the 0 case too but we are a little lenient here so the full 24bit twos-complement range can be handled Signed-off-by: Michael Niedermayer (cherry picked from commit 7ae36ceba9ef5a9c6409a2b196893f9f1d0c6d4e) Signed-off-by: Michael Niedermayer --- libavcodec/alsdec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index e453aae9e5..a7733503cd 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -1545,7 +1545,10 @@ static int read_diff_float_data(ALSDecContext *ctx, unsigned int ra_frame) { if (ctx->raw_samples[c][i] != 0) { //The following logic is taken from Tabel 14.45 and 14.46 from the ISO spec if (av_cmp_sf_ieee754(acf[c], FLOAT_1)) { - nbits[i] = 23 - av_log2(FFABSU(ctx->raw_samples[c][i])); + int nbit = av_log2(FFABSU(ctx->raw_samples[c][i])); + if (nbit > 23) + return AVERROR_INVALIDDATA; + nbits[i] = 23 - nbit; } else { nbits[i] = 23; }