diff options
author | Martin Storsjö <martin@martin.st> | 2013-01-15 15:27:30 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2013-01-15 23:18:33 +0200 |
commit | 977d4a3b8a2dbc2fb5e747c7072485016c9cdfaa (patch) | |
tree | a59530019d537cdc672c995f8d7d401a7aa1fc5c | |
parent | 42364fcbcac99c42a9859c3662a2956e5554b68c (diff) | |
download | ffmpeg-977d4a3b8a2dbc2fb5e747c7072485016c9cdfaa.tar.gz |
rtpdec_mpeg4: Check the return value from malloc
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r-- | libavformat/rtpdec_mpeg4.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c index 13d051ae85..3cac29f8a3 100644 --- a/libavformat/rtpdec_mpeg4.c +++ b/libavformat/rtpdec_mpeg4.c @@ -137,6 +137,8 @@ static int rtp_parse_mp4_au(PayloadContext *data, const uint8_t *buf) if (!data->au_headers || data->au_headers_allocated < data->nb_au_headers) { av_free(data->au_headers); data->au_headers = av_malloc(sizeof(struct AUHeaders) * data->nb_au_headers); + if (!data->au_headers) + return AVERROR(ENOMEM); data->au_headers_allocated = data->nb_au_headers; } @@ -162,6 +164,7 @@ static int aac_parse_packet(AVFormatContext *ctx, PayloadContext *data, const uint8_t *buf, int len, uint16_t seq, int flags) { + int ret; if (rtp_parse_mp4_au(data, buf)) return -1; @@ -170,7 +173,8 @@ static int aac_parse_packet(AVFormatContext *ctx, PayloadContext *data, /* XXX: Fixme we only handle the case where rtp_parse_mp4_au define one au_header */ - av_new_packet(pkt, data->au_headers[0].size); + if ((ret = av_new_packet(pkt, data->au_headers[0].size)) < 0) + return ret; memcpy(pkt->data, buf, data->au_headers[0].size); pkt->stream_index = st->index; |