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 <jamr...@gmail.com> wrote: >> >>> This makes sure no field is ever used uninitialized. >>> >>> Signed-off-by: James Almer <jamr...@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. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel