Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Watkins <watk@chromium.org>2015-07-07 20:23:44 +0300
committerMichael Niedermayer <michael@niedermayer.cc>2015-07-20 05:43:41 +0300
commit77f5302465ca7d9a1d4744cae22f510116d5b2a8 (patch)
tree4fcde68c73ee594dd07bdfe12995bad0a16172df
parent6d6ca8b82e344ccd59d7236d44feace730c62564 (diff)
oggparsedirac: check return value of init_get_bits
If init_get_bits fails the GetBitContext is invalid and must not be used. Check the return value in dirac_header and propogate the error. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 4f5c2e651a95b950f6a3fb36f2342cbc32515f17) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/oggparsedirac.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/libavformat/oggparsedirac.c b/libavformat/oggparsedirac.c
index 10fb07e92d..ab40f96c63 100644
--- a/libavformat/oggparsedirac.c
+++ b/libavformat/oggparsedirac.c
@@ -31,14 +31,19 @@ static int dirac_header(AVFormatContext *s, int idx)
AVStream *st = s->streams[idx];
dirac_source_params source;
GetBitContext gb;
+ int ret;
// already parsed the header
if (st->codec->codec_id == AV_CODEC_ID_DIRAC)
return 0;
- init_get_bits(&gb, os->buf + os->pstart + 13, (os->psize - 13) * 8);
- if (avpriv_dirac_parse_sequence_header(st->codec, &gb, &source) < 0)
- return -1;
+ ret = init_get_bits8(&gb, os->buf + os->pstart + 13, (os->psize - 13));
+ if (ret < 0)
+ return ret;
+
+ ret = avpriv_dirac_parse_sequence_header(st->codec, &gb, &source);
+ if (ret < 0)
+ return ret;
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
st->codec->codec_id = AV_CODEC_ID_DIRAC;