[FFmpeg-cvslog] swscale: prevent invalid writes in packed_16bpc_bswap

Janne Grunau git at videolan.org
Tue Dec 27 01:26:57 CET 2011


ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Mon Dec 26 13:38:39 2011 +0100| [6e9bb5aa3ed0b56c484ba96bf1bb3bdd8a9741f3] | committer: Janne Grunau

swscale: prevent invalid writes in packed_16bpc_bswap

Writes past the end of the destination buffer were occuring when its
stride was smaller than the stride of the source. Fixes Bug #183.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6e9bb5aa3ed0b56c484ba96bf1bb3bdd8a9741f3
---

 libswscale/swscale_unscaled.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index 34b0f24..7c339b6 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -285,9 +285,10 @@ static int packed_16bpc_bswap(SwsContext *c, const uint8_t *src[],
     int dststr = dstStride[0] >> 1;
     uint16_t       *dstPtr =       (uint16_t *) dst[0];
     const uint16_t *srcPtr = (const uint16_t *) src[0];
+    int min_stride         = FFMIN(srcstr, dststr);
 
     for (i = 0; i < srcSliceH; i++) {
-        for (j = 0; j < srcstr; j++) {
+        for (j = 0; j < min_stride; j++) {
             dstPtr[j] = av_bswap16(srcPtr[j]);
         }
         srcPtr += srcstr;



More information about the ffmpeg-cvslog mailing list