Browse Source

oggparsevorbis: check allocations

Signed-off-by: Anton Khirnov <anton@khirnov.net>
tags/n2.1
Vittorio Giovara Anton Khirnov 11 years ago
parent
commit
ed9245dba8
1 changed files with 7 additions and 3 deletions
  1. +7
    -3
      libavformat/oggparsevorbis.c

+ 7
- 3
libavformat/oggparsevorbis.c View File

@@ -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 */


Loading…
Cancel
Save