diff mbox series

[FFmpeg-devel,2/2] avfilter/f_reverse: Apply PTS compensation only when pts is available

Message ID 20231224014949.18449-2-michael@niedermayer.cc
State Accepted
Commit 61e73851a33f0b4cb7662f8578a4695e77bd3c19
Headers show
Series [FFmpeg-devel,1/2] avfilter/af_stereowiden: Check length | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Michael Niedermayer Dec. 24, 2023, 1:49 a.m. UTC
Fixes: out of array access
Fixes: tickets/10753/poc16ffmpeg

Regression since: 45dc668aea0edac34969b5a1ff76cf9ad3a09be1
Found-by: Zeng Yunxiang
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavfilter/f_reverse.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Michael Niedermayer Dec. 29, 2023, 6:35 p.m. UTC | #1
On Sun, Dec 24, 2023 at 02:49:49AM +0100, Michael Niedermayer wrote:
> Fixes: out of array access
> Fixes: tickets/10753/poc16ffmpeg
> 
> Regression since: 45dc668aea0edac34969b5a1ff76cf9ad3a09be1
> Found-by: Zeng Yunxiang
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavfilter/f_reverse.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

will apply

[...]
diff mbox series

Patch

diff --git a/libavfilter/f_reverse.c b/libavfilter/f_reverse.c
index 086819a207e..744f4a3cc83 100644
--- a/libavfilter/f_reverse.c
+++ b/libavfilter/f_reverse.c
@@ -266,7 +266,8 @@  static int areverse_request_frame(AVFilterLink *outlink)
         AVFrame *out = s->frames[s->nb_frames - 1];
         out->duration = s->duration[s->flush_idx];
         out->pts     = s->pts[s->flush_idx++] - s->nb_samples;
-        s->nb_samples += s->pts[s->flush_idx] - s->pts[s->flush_idx - 1] - out->nb_samples;
+        if (s->nb_frames > 1)
+            s->nb_samples += s->pts[s->flush_idx] - s->pts[s->flush_idx - 1] - out->nb_samples;
 
         if (av_sample_fmt_is_planar(out->format))
             reverse_samples_planar(out);