swscale/swscale_unscaled: Fix odd height inputs for bayer_to_rgb24_wrapper()

Fixes: 372d2df1f04b49e25f109f07f90b1505/asan_heap-oob_2835d2e_8501_99e0114d7ba3a6db885d0b4684d200c1.cine
Fixes out of array read

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
pull/278/head
Michael Niedermayer 9 years ago
parent 7a0361b06f
commit ad3b6fa7d8
  1. 7
      libswscale/swscale_unscaled.c

@ -1059,6 +1059,8 @@ static int bayer_to_rgb24_wrapper(SwsContext *c, const uint8_t* src[], int srcSt
default: return 0;
}
av_assert0(srcSliceH > 1);
copy(srcPtr, srcStride[0], dstPtr, dstStride[0], c->srcW);
srcPtr += 2 * srcStride[0];
dstPtr += 2 * dstStride[0];
@ -1069,7 +1071,10 @@ static int bayer_to_rgb24_wrapper(SwsContext *c, const uint8_t* src[], int srcSt
dstPtr += 2 * dstStride[0];
}
copy(srcPtr, srcStride[0], dstPtr, dstStride[0], c->srcW);
if (i + 1 == srcSliceH) {
copy(srcPtr, -srcStride[0], dstPtr, -dstStride[0], c->srcW);
} else if (i < srcSliceH)
copy(srcPtr, srcStride[0], dstPtr, dstStride[0], c->srcW);
return srcSliceH;
}

Loading…
Cancel
Save