[FFmpeg-devel] [PATCH] avformat/aviobuf: zero initialize the AVIOContext in ffio_init_context()
James Almer
jamrial at gmail.com
Thu Feb 15 02:03:36 EET 2018
On 2/14/2018 2:29 PM, James Almer wrote:
> 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.
Approved by wm4 on IRC, so pushed.
More information about the ffmpeg-devel
mailing list