From ed9245dba83f9add60f55718b537b0af2105c60e Mon Sep 17 00:00:00 2001
From: Vittorio Giovara <vittorio.giovara@gmail.com>
Date: Sat, 5 Oct 2013 21:35:31 +0200
Subject: [PATCH] oggparsevorbis: check allocations

Signed-off-by: Anton Khirnov <anton@khirnov.net>
---
 libavformat/oggparsevorbis.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index 82833904b84..1804e9a6af8 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -172,15 +172,17 @@ struct oggvorbis_private {
     int final_duration;
 };
 
-static unsigned int fixup_vorbis_headers(AVFormatContext *as,
-                                         struct oggvorbis_private *priv,
-                                         uint8_t **buf)
+static int fixup_vorbis_headers(AVFormatContext *as,
+                                struct oggvorbis_private *priv,
+                                uint8_t **buf)
 {
     int i, offset, len, err;
     unsigned char *ptr;
 
     len = priv->len[0] + priv->len[1] + priv->len[2];
     ptr = *buf = av_mallocz(len + len / 255 + 64);
+    if (!ptr)
+        return AVERROR(ENOMEM);
 
     ptr[0]  = 2;
     offset  = 1;
@@ -236,6 +238,8 @@ static int vorbis_header(AVFormatContext *s, int idx)
 
     priv->len[pkt_type >> 1]    = os->psize;
     priv->packet[pkt_type >> 1] = av_mallocz(os->psize);
+    if (!priv->packet[pkt_type >> 1])
+        return AVERROR(ENOMEM);
     memcpy(priv->packet[pkt_type >> 1], os->buf + os->pstart, os->psize);
     if (os->buf[os->pstart] == 1) {
         const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */
-- 
GitLab