swscale/swscale_unscaled: Fix odd height with nv24_to_yuv420p_chroma()

Fixes: out of array read
Fixes: 71726/clusterfuzz-testcase-ffmpeg_SWS_fuzzer-5876893532880896
Fixes: 377735917/clusterfuzz-testcase-minimized-ffmpeg_SWS_fuzzer-6686071112400896

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Approved-by: Ramiro Polla <ramiro.polla@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2024-09-22 23:00:52 +02:00
parent 5ba63f0ef1
commit d32dcc07a7
No known key found for this signature in database
GPG Key ID: B18E8928B3948D64

View File

@ -230,6 +230,8 @@ static void nv24_to_yuv420p_chroma(uint8_t *dst1, int dstStride1,
const uint8_t *src2 = src + srcStride;
// average 4 pixels into 1 (interleaved U and V)
for (int y = 0; y < h; y += 2) {
if (y + 1 == h)
src2 = src1;
for (int x = 0; x < w; x++) {
dst1[x] = (src1[4 * x + 0] + src1[4 * x + 2] +
src2[4 * x + 0] + src2[4 * x + 2]) >> 2;