[FFmpeg-devel] MpegEncContext->class is never initialized
John Dorian
scrubbbbs at gmail.com
Wed Mar 5 05:21:36 EET 2025
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 at 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 at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list