Browse Source

matroskadec: pad EBML_BIN data.

It might be passed to code requiring padding, such as lzo decompression.

Fixes invalid reads.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC:libav-stable@libav.org
tags/n2.2-rc1
Anton Khirnov 11 years ago
parent
commit
30be1ea33e
1 changed files with 3 additions and 1 deletions
  1. +3
    -1
      libavformat/matroskadec.c

+ 3
- 1
libavformat/matroskadec.c View File

@@ -734,9 +734,11 @@ static int ebml_read_ascii(AVIOContext *pb, int size, char **str)
static int ebml_read_binary(AVIOContext *pb, int length, EbmlBin *bin) static int ebml_read_binary(AVIOContext *pb, int length, EbmlBin *bin)
{ {
av_free(bin->data); av_free(bin->data);
if (!(bin->data = av_malloc(length)))
if (!(bin->data = av_malloc(length + FF_INPUT_BUFFER_PADDING_SIZE)))
return AVERROR(ENOMEM); return AVERROR(ENOMEM);


memset(bin->data + length, 0, FF_INPUT_BUFFER_PADDING_SIZE);

bin->size = length; bin->size = length;
bin->pos = avio_tell(pb); bin->pos = avio_tell(pb);
if (avio_read(pb, bin->data, length) != length) { if (avio_read(pb, bin->data, length) != length) {


Loading…
Cancel
Save