diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-02-02 01:57:14 +0100 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-02-17 12:16:43 -0500 |
commit | ec17782e17de1e8501ca213e276dfe5412ff1d11 (patch) | |
tree | e2cf3d89f87df51f49e110034f8bcbcc1eecf37c | |
parent | e51f22122d23589e93ac4f0b3e570bb925755915 (diff) | |
download | ffmpeg-ec17782e17de1e8501ca213e276dfe5412ff1d11.tar.gz |
dvdsubdec: Check memory allocations
-rw-r--r-- | libavcodec/dvdsubdec.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c index 15abac0738..bc5a3a7914 100644 --- a/libavcodec/dvdsubdec.c +++ b/libavcodec/dvdsubdec.c @@ -324,16 +324,23 @@ static int decode_dvd_subtitles(DVDSubContext *ctx, AVSubtitle *sub_header, sub_header->num_rects = 0; } - bitmap = av_malloc(w * h); sub_header->rects = av_mallocz(sizeof(*sub_header->rects)); + if (!sub_header->rects) + goto fail; sub_header->rects[0] = av_mallocz(sizeof(AVSubtitleRect)); + if (!sub_header->rects[0]) + goto fail; sub_header->num_rects = 1; - sub_header->rects[0]->pict.data[0] = bitmap; + bitmap = sub_header->rects[0]->pict.data[0] = av_malloc(w * h); + if (!bitmap) + goto fail; decode_rle(bitmap, w * 2, w, (h + 1) / 2, buf, offset1, buf_size, is_8bit); decode_rle(bitmap + w, w * 2, w, h / 2, buf, offset2, buf_size, is_8bit); sub_header->rects[0]->pict.data[1] = av_mallocz(AVPALETTE_SIZE); + if (!sub_header->rects[0]->pict.data[1]) + goto fail; if (is_8bit) { if (yuv_palette == 0) goto fail; |