[FFmpeg-devel] [PATCH] avformat/aviobuf: zero initialize the AVIOContext in ffio_init_context()

James Almer jamrial at gmail.com
Wed Feb 14 19:29:06 EET 2018


On 2/14/2018 2:17 AM, wm4 wrote:
> On Tue, 13 Feb 2018 22:27:49 -0300
> James Almer <jamrial at gmail.com> wrote:
> 
>> This makes sure no field is ever used uninitialized.
>>
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>> I think i prefer this one.
>>
>>  libavformat/aviobuf.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
>> index 86eb6579f4..d63db3897f 100644
>> --- a/libavformat/aviobuf.c
>> +++ b/libavformat/aviobuf.c
>> @@ -87,6 +87,8 @@ int ffio_init_context(AVIOContext *s,
>>                    int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
>>                    int64_t (*seek)(void *opaque, int64_t offset, int whence))
>>  {
>> +    memset(s, 0, sizeof(AVIOContext));
>> +
>>      s->buffer      = buffer;
>>      s->orig_buffer_size =
>>      s->buffer_size = buffer_size;
>> @@ -135,7 +137,7 @@ AVIOContext *avio_alloc_context(
>>                    int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
>>                    int64_t (*seek)(void *opaque, int64_t offset, int whence))
>>  {
>> -    AVIOContext *s = av_mallocz(sizeof(AVIOContext));
>> +    AVIOContext *s = av_malloc(sizeof(AVIOContext));
>>      if (!s)
>>          return NULL;
>>      ffio_init_context(s, buffer, buffer_size, write_flag, opaque,
> 
> There are a lot of calls to ffio_init_context() - is it sure that there
> are no fields that must be preserved?

I assume no. There are some fields that are currently not set by
ffio_init_context(), including the checksum ones that created the
problem at hand, but i don't think any should be preserved in case the
context is reused.

And for that matter, is there any code in libavformat that reuses these
contexts at all? This init function is internal, so API users are unable
to reuse AVIOContexts, and avio_alloc_context() always zero initializes
them.

> 
> I'd probably prefer "*s = (AVIOContext){0};", but that's just me.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 



More information about the ffmpeg-devel mailing list