changeset 31680:eea755ce8eab

In planarCopyWrapper, Only copy length, not stride of the last line in the plane If the destination planes are offset within the destination buffer, writing the extra bytes at the end may write outside of the destination buffer.
author mstorsjo
date Fri, 16 Jul 2010 17:45:50 +0000
parents 551ab9b60d48
children 7e7c541566ad
files libswscale/swscale.c
diffstat 1 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libswscale/swscale.c	Fri Jul 16 11:21:54 2010 +0000
+++ b/libswscale/swscale.c	Fri Jul 16 17:45:50 2010 +0000
@@ -1663,9 +1663,11 @@
                     srcPtr+= srcStride[plane];
                     dstPtr+= dstStride[plane];
                 }
-            } else if (dstStride[plane]==srcStride[plane] && srcStride[plane] > 0)
-                memcpy(dst[plane] + dstStride[plane]*y, src[plane], height*dstStride[plane]);
-            else {
+            } else if (dstStride[plane]==srcStride[plane] && srcStride[plane] > 0) {
+                if (height > 0)
+                    memcpy(dst[plane] + dstStride[plane]*y, src[plane],
+                           (height - 1)*dstStride[plane] + length);
+            } else {
                 if(is16BPS(c->srcFormat) && is16BPS(c->dstFormat))
                     length*=2;
                 for (i=0; i<height; i++) {