1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-07-21 19:54:13 +02:00

lavfi/noise: fix out of array access

Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
Paul B Mahol 2013-05-29 16:54:28 +00:00
parent 83f9735592
commit f8f42f4821

View File

@ -35,7 +35,7 @@
#include "internal.h" #include "internal.h"
#include "video.h" #include "video.h"
#define MAX_NOISE 4096 #define MAX_NOISE 5120
#define MAX_SHIFT 1024 #define MAX_SHIFT 1024
#define MAX_RES (MAX_NOISE-MAX_SHIFT) #define MAX_RES (MAX_NOISE-MAX_SHIFT)
@ -347,14 +347,15 @@ static void noise(uint8_t *dst, const uint8_t *src,
} }
for (y = start; y < end; y++) { for (y = start; y < end; y++) {
const int ix = y & (MAX_RES - 1);
if (flags & NOISE_TEMPORAL) if (flags & NOISE_TEMPORAL)
shift = av_lfg_get(lfg) & (MAX_SHIFT - 1); shift = av_lfg_get(lfg) & (MAX_SHIFT - 1);
else else
shift = n->rand_shift[y]; shift = n->rand_shift[ix];
if (flags & NOISE_AVERAGED) { if (flags & NOISE_AVERAGED) {
n->line_noise_avg(dst, src, width, p->prev_shift[y]); n->line_noise_avg(dst, src, width, p->prev_shift[ix]);
p->prev_shift[y][shift & 3] = noise + shift; p->prev_shift[ix][shift & 3] = noise + shift;
} else { } else {
n->line_noise(dst, src, noise, width, shift); n->line_noise(dst, src, noise, width, shift);
} }