Fixes: 2.96539e+09 is outside the range of representable values of type 'int' Fixes: Assertion n>=0 && n<=32 failed at libavcodec/get_bits.h:423 Fixes: 62241/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_OSQ_fuzzer-4525761925873664 Fixes: 70406/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_OSQ_fuzzer-6545326804434944
Showing the changes to libavcodec (1 of 1 file). Show all
Unified · Split
| @@ -161,11 +161,15 @@ static int update_residue_parameter(OSQChannel *cb) · 160 unmodified lines | ||
| 161 | 161 | |
| 162 | 162 | sum = cb->sum; |
| 163 | 163 | x = sum / cb->count; |
| 164 | − rice_k = av_ceil_log2(x); | |
| 164 | + rice_k = ceil(log2(x)); | |
| 165 | 165 | if (rice_k >= 30) { |
| 166 | − rice_k = floor(sum / 1.4426952 + 0.5); | |
| 167 | − if (rice_k < 1) | |
| 166 | + double f = floor(sum / 1.4426952 + 0.5); | |
| 167 | + if (f <= 1) { | |
| 168 | 168 | rice_k = 1; |
| 169 | + } else if (f >= 31) { | |
| 170 | + rice_k = 31; | |
| 171 | + } else | |
| 172 | + rice_k = f; | |
| 169 | 173 | } |
| 170 | 174 | |
| 171 | 175 | return rice_k; |