diff mbox series

[FFmpeg-devel] avcodec/vvcdec: frame_context_setup, set fc->ref to NULL

Message ID TYSPR06MB6433F9226219F0908FBD3D45AA4F2@TYSPR06MB6433.apcprd06.prod.outlook.com
State Accepted
Commit 1e174120d48a5ed86d9353018e7bb3c11636772c
Headers show
Series [FFmpeg-devel] avcodec/vvcdec: frame_context_setup, set fc->ref to NULL | expand

Checks

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

Commit Message

Nuo Mi Feb. 13, 2024, 2:30 a.m. UTC
fc->ref points to an old VVCFrame, which cannot be used after frame_context_setup.
This prevents crashes in decode_nal_units-->ff_vvc_report_frame_finished.

Signed-off-by: Frank Plowman <post@frankplowman.com>
---
 libavcodec/vvc/vvcdec.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Frank Plowman Feb. 13, 2024, 10:38 a.m. UTC | #1
On 13/02/2024 02:30, Nuo Mi wrote:
> fc->ref points to an old VVCFrame, which cannot be used after frame_context_setup.
> This prevents crashes in decode_nal_units-->ff_vvc_report_frame_finished.
> 
> Signed-off-by: Frank Plowman <post@frankplowman.com>
> ---
>  libavcodec/vvc/vvcdec.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/libavcodec/vvc/vvcdec.c b/libavcodec/vvc/vvcdec.c
> index 8163b5ecb6..e88e746de4 100644
> --- a/libavcodec/vvc/vvcdec.c
> +++ b/libavcodec/vvc/vvcdec.c
> @@ -594,6 +594,8 @@ static int frame_context_setup(VVCFrameContext *fc, VVCContext *s)
>  {
>      int ret;
>  
> +    fc->ref = NULL;
> +
>      // copy refs from the last frame
>      if (s->nb_frames && s->nb_fcs > 1) {
>          VVCFrameContext *prev = get_frame_context(s, fc, -1);

LGTM.  Fixes the crash on all the fuzz data I have which produce it.
FATE runners are failing at the time of writing, but I manually ran this
against the VVC tests as well as the suite from the FFVVC GitHub and all
tests passed.

Btw, I don't think you should add Signed-off-by tags for other people.
Their exact meaning varies by project and I am not sure of their meaning
in FFmpeg (if there is one), but generally they indicate that person
claims some sort of responsibility for the patch in the case of e.g. a
license violation.  That being said, I am happy to sign this off.
Nuo Mi Feb. 14, 2024, 4:17 a.m. UTC | #2
On Tue, Feb 13, 2024 at 6:39 PM Frank Plowman <post@frankplowman.com> wrote:

> On 13/02/2024 02:30, Nuo Mi wrote:
> > fc->ref points to an old VVCFrame, which cannot be used after
> frame_context_setup.
> > This prevents crashes in decode_nal_units-->ff_vvc_report_frame_finished.
> >
> > Signed-off-by: Frank Plowman <post@frankplowman.com>
> > ---
> >  libavcodec/vvc/vvcdec.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/libavcodec/vvc/vvcdec.c b/libavcodec/vvc/vvcdec.c
> > index 8163b5ecb6..e88e746de4 100644
> > --- a/libavcodec/vvc/vvcdec.c
> > +++ b/libavcodec/vvc/vvcdec.c
> > @@ -594,6 +594,8 @@ static int frame_context_setup(VVCFrameContext *fc,
> VVCContext *s)
> >  {
> >      int ret;
> >
> > +    fc->ref = NULL;
> > +
> >      // copy refs from the last frame
> >      if (s->nb_frames && s->nb_fcs > 1) {
> >          VVCFrameContext *prev = get_frame_context(s, fc, -1);
>
> LGTM.  Fixes the crash on all the fuzz data I have which produce it.
> FATE runners are failing at the time of writing, but I manually ran this
> against the VVC tests as well as the suite from the FFVVC GitHub and all
> tests passed.
>
> Btw, I don't think you should add Signed-off-by tags for other people.
> Their exact meaning varies by project and I am not sure of their meaning
> in FFmpeg (if there is one), but generally they indicate that person
> claims some sort of responsibility for the patch in the case of e.g. a
> license violation.  That being said, I am happy to sign this off.
>
Hi Frank,
Thank you for the review.
Sorry for the misuse. I will pay attention to it next time.
Patch applied.

>
> --
> Frank
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
Anton Khirnov Feb. 14, 2024, 11:12 a.m. UTC | #3
Quoting Frank Plowman (2024-02-13 11:38:50)
> Btw, I don't think you should add Signed-off-by tags for other people.
> Their exact meaning varies by project and I am not sure of their meaning
> in FFmpeg (if there is one),

There is no officially accepted one.

E.g. I add my signoff to patches I push where I'm not the author.
diff mbox series

Patch

diff --git a/libavcodec/vvc/vvcdec.c b/libavcodec/vvc/vvcdec.c
index 8163b5ecb6..e88e746de4 100644
--- a/libavcodec/vvc/vvcdec.c
+++ b/libavcodec/vvc/vvcdec.c
@@ -594,6 +594,8 @@  static int frame_context_setup(VVCFrameContext *fc, VVCContext *s)
 {
     int ret;
 
+    fc->ref = NULL;
+
     // copy refs from the last frame
     if (s->nb_frames && s->nb_fcs > 1) {
         VVCFrameContext *prev = get_frame_context(s, fc, -1);