[FFmpeg-devel] [PATCH] lavc/options: don't copy priv context when it is not AVOption object
lukasz.m.luki2 at gmail.com
Thu Dec 4 00:50:06 CET 2014
On 03.12.2014 01:28, Michael Niedermayer wrote:
> On Wed, Dec 03, 2014 at 01:24:55AM +0100, Lukasz Marek wrote:
>> On 03.12.2014 01:15, Michael Niedermayer wrote:
>>> On Wed, Dec 03, 2014 at 12:06:47AM +0100, Lukasz Marek wrote:
>>>> This prevents potential crash when opt API is used without a class.
>>>> Signed-off-by: Lukasz Marek <lukasz.m.luki2 at gmail.com>
>>>> libavcodec/options.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>> diff --git a/libavcodec/options.c b/libavcodec/options.c
>>>> index 7f9fb07..42ef754 100644
>>>> --- a/libavcodec/options.c
>>>> +++ b/libavcodec/options.c
>>>> @@ -196,7 +196,7 @@ int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src)
>>>> dest->priv_data = orig_priv_data;
>>>> - if (orig_priv_data)
>>>> + if (orig_priv_data && src->codec && src->codec->priv_class)
>>>> av_opt_copy(orig_priv_data, src->priv_data);
>>> "&& src->codec->priv_class" <--- LGTM
>>> the src->codec check is probably ok too but is it NULL ever ?
>> after avcodec_alloc_context3(NULL)?
>> IIRC there was a patch recently that set codec in
>> avcodec_alloc_context3 (via avcodec_get_context_defaults3) when
>> provided. Maybe after that it is not so common case. But still when
>> allocated with NULL then you have NULL there. src context doesn't
>> have to be open neither.
I'm sorry for doing a mess recently regarding this damn
avcodec_copy_context function. I'm sending updated patch.
I will send in a moment patchset with test for it.
The test doesn't cover everything (it is kinda hard to test it), but it
should cover options management.
Just to clear, I will ping in one more in a moment and don't bother with
any other atm :)
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 1171 bytes
Desc: not available
More information about the ffmpeg-devel