[FFmpeg-cvslog] lavfi/noise: fix out of array access

Paul B Mahol git at videolan.org
Wed May 29 18:56:21 CEST 2013


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed May 29 16:54:28 2013 +0000| [f8f42f48218138d37956407ebf10227eb86d4a2d] | committer: Paul B Mahol

lavfi/noise: fix out of array access

Signed-off-by: Paul B Mahol <onemda at gmail.com>

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

 libavfilter/vf_noise.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/libavfilter/vf_noise.c b/libavfilter/vf_noise.c
index 274a1de..9fd2a67 100644
--- a/libavfilter/vf_noise.c
+++ b/libavfilter/vf_noise.c
@@ -35,7 +35,7 @@
 #include "internal.h"
 #include "video.h"
 
-#define MAX_NOISE 4096
+#define MAX_NOISE 5120
 #define MAX_SHIFT 1024
 #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++) {
+        const int ix = y & (MAX_RES - 1);
         if (flags & NOISE_TEMPORAL)
             shift = av_lfg_get(lfg) & (MAX_SHIFT - 1);
         else
-            shift = n->rand_shift[y];
+            shift = n->rand_shift[ix];
 
         if (flags & NOISE_AVERAGED) {
-            n->line_noise_avg(dst, src, width, p->prev_shift[y]);
-            p->prev_shift[y][shift & 3] = noise + shift;
+            n->line_noise_avg(dst, src, width, p->prev_shift[ix]);
+            p->prev_shift[ix][shift & 3] = noise + shift;
         } else {
             n->line_noise(dst, src, noise, width, shift);
         }



More information about the ffmpeg-cvslog mailing list