Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: John Dorian <scrubbbbs@gmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] MpegEncContext->class is never initialized
Date: Tue, 4 Mar 2025 21:21:36 -0600
Message-ID: <CAGeeRw=6_rsrx_v5DxTnRgY1sc+oxjLdW0XroXWeU8nu45M2VA@mail.gmail.com> (raw)
In-Reply-To: <AS8P250MB0744DFE9408DDB0C781A831A8FC82@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>

Yes, I have a custom log callback. I have multiple files open and I'd like
to associate logged errors with the correct file, which I am doing through
the objects that have an "opaque" member (not all, but most do). I don't
think this is any abuse of the API as it does state that the first member
of a struct passed through av_log should be AVClass*.

The solution for now is to check for a null pointer e.g. in the log
callback, "if ((AVClass**)ptr[0])==NULL)" The helper log functions such as
av_default_item_name() do not have this check, perhaps that is the real
problem here.

I'm not so sure it is required to be non-null given that the features of
AVClass may not be useful to every object, e.g. options and such may not be
appropriate for private objects.


On Tue, Mar 4, 2025 at 4:36 PM Andreas Rheinhardt <
andreas.rheinhardt@outlook.com> wrote:

> John Dorian:
> > I discovered a crash here if log handler function tries to get the class
> > name from "s"
> >
> > mpeg12dec.c:
> > if (get_bits_left(&s->gb) < 0) {
> >          av_log(s, AV_LOG_ERROR, "overread %d\n",
> -get_bits_left(&s->gb));
> >          return AVERROR_INVALIDDATA;
> >      }
> >
> > And it seems to be because MpegEncContext->class is never initialized (or
> > rather it is initialized to 0) due to av_malloc_z() I assume.
> >
> > So the question is, is it valid for any av object to have its av_class
> set
> > to 0.
>
> Here is the patch:
> https://ffmpeg.org/pipermail/ffmpeg-devel/2025-March/340615.html
> My reading of log.h is that it is illegal for the pointer to an AVClass
> to be NULL. The default log callback handles this gracefully, so I
> presume you are using a custom log callback.
>
> - Andreas
>
> _______________________________________________
> 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".
>
_______________________________________________
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".

  reply	other threads:[~2025-03-05  3:22 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-04 21:55 John Dorian
2025-03-04 22:03 ` Andreas Rheinhardt
2025-03-04 22:36 ` Andreas Rheinhardt
2025-03-05  3:21   ` John Dorian [this message]
2025-03-05  3:33     ` Andreas Rheinhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGeeRw=6_rsrx_v5DxTnRgY1sc+oxjLdW0XroXWeU8nu45M2VA@mail.gmail.com' \
    --to=scrubbbbs@gmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git