[FFmpeg-devel] [PATCH] Fix potential av_find_opt() crash if context is NULL
Stefano Sabatini
stefano.sabatini-lala
Sun Nov 9 12:48:37 CET 2008
On date Thursday 2008-10-30 23:07:29 +0100, Michael Niedermayer encoded:
> On Thu, Oct 30, 2008 at 09:05:32PM +0100, Stefano Sabatini wrote:
[...]
> > OK, but then we should check for its nullness every time we access to
> > it in cmdline.c, since that's generic code and from there we can't
> > know if sws_opts has been initialized or not, same consideration for
> > avformat_opts and avcodec_opts.
> >
> > *Or*, we can change the semantics of av_find_opt() (micro bump) to
> > make it accept a NULL, for which solution I have a slight preference.
>
> i disagree, its all fine as it is, NULL is not allowed and that should be
> clear from the docs,
> the avfilter patch is broken its the onle thing that need fixing.
I'll try to explain myself better...
av*_opts and swscale_opts are declared and defined (as NULL) in
cmdutils.c, applications linking to it have to define them to
something different from NULL or they will crash when calling
opt_default().
Patching libavfilter-soc would mean in this case something like the
following in cmdutils.c:
#ifndef CONFIG_AVFILTER
if(!o)
o = av_set_string2(sws_opts, opt, arg, 1);
#endif
which I think it's just plain wrong, since cmdutils.o should be
application agnostic, and there is no reason for which we shouldn't
look in sws_opts simply because CONFIG_AVFILTER is set.
So I propose these alternatives:
1) we can check for av*_opts and sws_opts nullness like this:
if(!o && sws_opts)
o = av_set_string2(sws_opts, opt, arg, 1);
or
2) (mabe simpler) change as proposed the semantics of
av_set_string2()/av_find_opt() making them accept NULL values, I have
no idea if this is the best semantics to implement but looks quite
acceptable and it's simpler to implement.
Regards.
--
FFmpeg = Freak Fast Meaningful Portable Exciting Gospel
More information about the ffmpeg-devel
mailing list