summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2014-10-02 09:31:41 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2014-10-02 09:31:41 +0200
commit80ca627abb53d9e563f6ce9c52a05a50738a28d0 (patch)
tree1f16db5dd31d74ee482480745ee5b1f60d37e59e
parentc9f2ec8a3464718641742a105179f828ccbfb392 (diff)
Check for oom in the dirac parser.
Fixes ticket #3996.
-rw-r--r--libavcodec/dirac_parser.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/dirac_parser.c b/libavcodec/dirac_parser.c
index 4119e3b660..8b7c55edef 100644
--- a/libavcodec/dirac_parser.c
+++ b/libavcodec/dirac_parser.c
@@ -139,6 +139,8 @@ static int dirac_combine_frame(AVCodecParserContext *s, AVCodecContext *avctx,
void *new_buffer =
av_fast_realloc(pc->buffer, &pc->buffer_size,
pc->index + (*buf_size - pc->sync_offset));
+ if (!new_buffer)
+ return AVERROR(ENOMEM);
pc->buffer = new_buffer;
memcpy(pc->buffer + pc->index, (*buf + pc->sync_offset),
*buf_size - pc->sync_offset);
@@ -149,6 +151,8 @@ static int dirac_combine_frame(AVCodecParserContext *s, AVCodecContext *avctx,
DiracParseUnit pu1, pu;
void *new_buffer = av_fast_realloc(pc->buffer, &pc->buffer_size,
pc->index + next);
+ if (!new_buffer)
+ return AVERROR(ENOMEM);
pc->buffer = new_buffer;
memcpy(pc->buffer + pc->index, *buf, next);
pc->index += next;