[FFmpeg-cvslog] avfilter/vf_deblock: fix posible overreads

Paul B Mahol git at videolan.org
Wed Apr 13 11:23:08 EEST 2022


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed Apr 13 10:20:59 2022 +0200| [9a22c6508a413f62080801c2d08b24d064719fcb] | committer: Paul B Mahol

avfilter/vf_deblock: fix posible overreads

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

 libavfilter/vf_deblock.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libavfilter/vf_deblock.c b/libavfilter/vf_deblock.c
index b7c6a03d4a..770fce0eab 100644
--- a/libavfilter/vf_deblock.c
+++ b/libavfilter/vf_deblock.c
@@ -337,7 +337,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
             s->deblockv(dst + x * s->bpc, out->linesize[plane],
                         FFMIN(block, height), s->ath, s->bth, s->gth, s->dth, s->max);
 
-        for (y = block; y < height; y += block) {
+        for (y = block; y < height - block; y += block) {
             dst += out->linesize[plane] * block;
 
             s->deblockh(dst, out->linesize[plane],
@@ -353,6 +353,12 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
                             s->ath, s->bth, s->gth, s->dth, s->max);
             }
         }
+
+        dst += out->linesize[plane] * block;
+        for (x = block; x < width; x += block)
+            s->deblockv(dst + x * s->bpc, out->linesize[plane],
+                        FFMIN(block, height - y), s->ath, s->bth, s->gth, s->dth, s->max);
+
     }
 
     if (in != out)



More information about the ffmpeg-cvslog mailing list