assdec: check av_new_packet return value
authorVittorio Giovara <vittorio.giovara@gmail.com>
Fri, 24 Oct 2014 12:15:40 +0000 (13:15 +0100)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Wed, 29 Oct 2014 16:54:43 +0000 (16:54 +0000)
CC: libav-stable@libav.org
Bug-Id: CID 703626

libavformat/assdec.c

index 7bd3d17..08c1222 100644 (file)
@@ -151,6 +151,7 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     ASSContext *ass = s->priv_data;
     uint8_t *p, *end;
 {
     ASSContext *ass = s->priv_data;
     uint8_t *p, *end;
+    int ret;
 
     if (ass->event_index >= ass->event_count)
         return AVERROR(EIO);
 
     if (ass->event_index >= ass->event_count)
         return AVERROR(EIO);
@@ -158,7 +159,9 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt)
     p = ass->event[ass->event_index];
 
     end = strchr(p, '\n');
     p = ass->event[ass->event_index];
 
     end = strchr(p, '\n');
-    av_new_packet(pkt, end ? end - p + 1 : strlen(p));
+    ret = av_new_packet(pkt, end ? end - p + 1 : strlen(p));
+    if (ret < 0)
+        return ret;
     pkt->flags |= AV_PKT_FLAG_KEY;
     pkt->pos    = p - ass->event_buffer + s->streams[0]->codec->extradata_size;
     pkt->pts    = pkt->dts = get_pts(p);
     pkt->flags |= AV_PKT_FLAG_KEY;
     pkt->pos    = p - ass->event_buffer + s->streams[0]->codec->extradata_size;
     pkt->pts    = pkt->dts = get_pts(p);