[FFmpeg-devel] [PATCH] mxfenc: ensure mxf->body_partition_offset is not NULL before using it

tomas.hardin at codemill.se tomas.hardin at codemill.se
Tue Mar 17 10:17:06 CET 2015


On 2015-03-14 18:03, Andreas Cadhalpun wrote:
> On 14.03.2015 02:17, Mark Reid wrote:
>> On Fri, Mar 13, 2015 at 6:02 AM, Andreas Cadhalpun <
>> andreas.cadhalpun at googlemail.com> wrote:
>> 
>>> On 13.03.2015 11:59, Tomas Härdin wrote:
>>>> A better solution would
>>>> be to figure out why mxf->body_partition_offset becomes NULL so that
>>>> index tables and such can be rewritten properly.
>>> 
>>> It can always happen that mxf->body_partition_offset is NULL, e.g. if
>>> no memory is left, or if something else fails. Try e.g.:
>>> ffmpeg -f lavfi -i testsrc -c:v libx264 -f mxf_opatom
>>> 
>>> 
>> mxf->body_partition_offset is NULL because currently only AVC Intra 
>> 50/100
>> h264 is supported.
> 
> Yes.
> 
>> The encoder figures out the h264 format by parsing the
>> h264 packet and doesn't write the body partiton (or even the header
>> partition) untill after it parses the first packet. If the packet is
>> invalid, nothing get written and mxf->body_partition_offset doesn't 
>> get
>> allocated.
> 
> That's correct.
> 
>>  perhaps mxf_write_footer should return a error if
>> mxf->body_partition_offset is NULL or just if mxf->header_written == 0
>>  before doing trying to write anything.
> 
> Well, mxf_write_footer also has to free some allocated memory, which 
> would
> get leaked if one just returns...
> ...like it does in any of the currently present 'return err' cases.
> 
> Attached is a patch fixing the memleaks and another returning an error,
> if no header was written before the footer.
> 
> Best regards,
> Andreas

[PATCH 2/2] mxfenc: don't try to write footer without header:

> +    if (!mxf->header_written ||
> +        (s->oformat == &ff_mxf_opatom_muxer && 
> !mxf->body_partition_offset)) {
> +        err = AVERROR_UNKNOWN;
> +        goto end;
> +    }
> +

AVERROR_UNKNOWN?

Memleak patch is obviously OK.

/Tomas


More information about the ffmpeg-devel mailing list