mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-31 07:39:26 +00:00
pngdec/filter: dont access out of array elements at the end
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 1ac0fa50ef
)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
e6ac11e417
commit
41eda87048
@ -148,7 +148,7 @@ static void add_paeth_prediction_c(uint8_t *dst, uint8_t *src, uint8_t *top, int
|
|||||||
if(bpp >= 2) g = dst[1];\
|
if(bpp >= 2) g = dst[1];\
|
||||||
if(bpp >= 3) b = dst[2];\
|
if(bpp >= 3) b = dst[2];\
|
||||||
if(bpp >= 4) a = dst[3];\
|
if(bpp >= 4) a = dst[3];\
|
||||||
for(; i < size; i+=bpp) {\
|
for(; i <= size - bpp; i+=bpp) {\
|
||||||
dst[i+0] = r = op(r, src[i+0], last[i+0]);\
|
dst[i+0] = r = op(r, src[i+0], last[i+0]);\
|
||||||
if(bpp == 1) continue;\
|
if(bpp == 1) continue;\
|
||||||
dst[i+1] = g = op(g, src[i+1], last[i+1]);\
|
dst[i+1] = g = op(g, src[i+1], last[i+1]);\
|
||||||
@ -164,13 +164,9 @@ static void add_paeth_prediction_c(uint8_t *dst, uint8_t *src, uint8_t *top, int
|
|||||||
else if(bpp == 2) UNROLL1(2, op)\
|
else if(bpp == 2) UNROLL1(2, op)\
|
||||||
else if(bpp == 3) UNROLL1(3, op)\
|
else if(bpp == 3) UNROLL1(3, op)\
|
||||||
else if(bpp == 4) UNROLL1(4, op)\
|
else if(bpp == 4) UNROLL1(4, op)\
|
||||||
else {\
|
for (; i < size; i++) {\
|
||||||
for (; i < size; i += bpp) {\
|
dst[i] = op(dst[i-bpp], src[i], last[i]);\
|
||||||
int j;\
|
}\
|
||||||
for (j = 0; j < bpp; j++)\
|
|
||||||
dst[i+j] = op(dst[i+j-bpp], src[i+j], last[i+j]);\
|
|
||||||
}\
|
|
||||||
}
|
|
||||||
|
|
||||||
/* NOTE: 'dst' can be equal to 'last' */
|
/* NOTE: 'dst' can be equal to 'last' */
|
||||||
static void png_filter_row(PNGDecContext *s, uint8_t *dst, int filter_type,
|
static void png_filter_row(PNGDecContext *s, uint8_t *dst, int filter_type,
|
||||||
|
Loading…
Reference in New Issue
Block a user