diff options
Diffstat (limited to 'meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch')
-rw-r--r-- | meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch b/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch new file mode 100644 index 0000000000..1e5fb7deb1 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-pngdec-filter-dont-access-out-of-array-elements-at-t.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | gst-ffmpeg: pngdec/filter: dont access out of array elements at the end | ||
2 | |||
3 | Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind | ||
4 | |||
5 | Upstream-Status: Backport | ||
6 | |||
7 | Signed-off-by: Yue Tao <yue.tao@windriver.com> | ||
8 | --- | ||
9 | libavcodec/pngdec.c | 12 ++++-------- | ||
10 | 1 files changed, 4 insertions(+), 8 deletions(-) | ||
11 | |||
12 | diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c | ||
13 | index 97c0ad1..193e35e 100644 | ||
14 | --- a/gst-libs/ext/libav/libavcodec/pngdec.c | ||
15 | +++ b/gst-libs/ext/libav/libavcodec/pngdec.c | ||
16 | @@ -190,7 +190,7 @@ void ff_add_png_paeth_prediction(uint8_t *dst, uint8_t *src, uint8_t *top, int w | ||
17 | if(bpp >= 2) g = dst[1];\ | ||
18 | if(bpp >= 3) b = dst[2];\ | ||
19 | if(bpp >= 4) a = dst[3];\ | ||
20 | - for(; i < size; i+=bpp) {\ | ||
21 | + for(; i <= size - bpp; i+=bpp) {\ | ||
22 | dst[i+0] = r = op(r, src[i+0], last[i+0]);\ | ||
23 | if(bpp == 1) continue;\ | ||
24 | dst[i+1] = g = op(g, src[i+1], last[i+1]);\ | ||
25 | @@ -206,13 +206,9 @@ void ff_add_png_paeth_prediction(uint8_t *dst, uint8_t *src, uint8_t *top, int w | ||
26 | else if(bpp == 2) UNROLL1(2, op)\ | ||
27 | else if(bpp == 3) UNROLL1(3, op)\ | ||
28 | else if(bpp == 4) UNROLL1(4, op)\ | ||
29 | - else {\ | ||
30 | - for (; i < size; i += bpp) {\ | ||
31 | - int j;\ | ||
32 | - for (j = 0; j < bpp; j++)\ | ||
33 | - dst[i+j] = op(dst[i+j-bpp], src[i+j], last[i+j]);\ | ||
34 | - }\ | ||
35 | - } | ||
36 | + for (; i < size; i++) {\ | ||
37 | + dst[i] = op(dst[i-bpp], src[i], last[i]);\ | ||
38 | + }\ | ||
39 | |||
40 | /* NOTE: 'dst' can be equal to 'last' */ | ||
41 | static void png_filter_row(PNGDSPContext *dsp, uint8_t *dst, int filter_type, | ||
42 | -- | ||
43 | 1.7.5.4 | ||
44 | |||