Commit 5626f994 authored by Alexandra Khirnova's avatar Alexandra Khirnova Committed by Diego Biurrun

avformat: Use av_reallocp() where suitable

Signed-off-by: 's avatarDiego Biurrun <diego@biurrun.de>
parent 0f310a6f
...@@ -655,10 +655,11 @@ static int avi_read_header(AVFormatContext *s) ...@@ -655,10 +655,11 @@ static int avi_read_header(AVFormatContext *s)
if (st->codec->codec_tag == 0 && st->codec->height > 0 && if (st->codec->codec_tag == 0 && st->codec->height > 0 &&
st->codec->extradata_size < 1U << 30) { st->codec->extradata_size < 1U << 30) {
st->codec->extradata_size += 9; st->codec->extradata_size += 9;
st->codec->extradata = av_realloc(st->codec->extradata, if ((ret = av_reallocp(&st->codec->extradata,
st->codec->extradata_size + st->codec->extradata_size +
FF_INPUT_BUFFER_PADDING_SIZE); FF_INPUT_BUFFER_PADDING_SIZE)) < 0)
if (st->codec->extradata) return ret;
else
memcpy(st->codec->extradata + st->codec->extradata_size - 9, memcpy(st->codec->extradata + st->codec->extradata_size - 9,
"BottomUp", 9); "BottomUp", 9);
} }
......
...@@ -533,13 +533,13 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -533,13 +533,13 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt)
} }
if (s->pb->seekable) { if (s->pb->seekable) {
int err;
AVIIndex* idx = &avist->indexes; AVIIndex* idx = &avist->indexes;
int cl = idx->entry / AVI_INDEX_CLUSTER_SIZE; int cl = idx->entry / AVI_INDEX_CLUSTER_SIZE;
int id = idx->entry % AVI_INDEX_CLUSTER_SIZE; int id = idx->entry % AVI_INDEX_CLUSTER_SIZE;
if (idx->ents_allocated <= idx->entry) { if (idx->ents_allocated <= idx->entry) {
idx->cluster = av_realloc(idx->cluster, (cl+1)*sizeof(void*)); if ((err = av_reallocp(&idx->cluster, (cl + 1) * sizeof(*idx->cluster))) < 0)
if (!idx->cluster) return err;
return -1;
idx->cluster[cl] = av_malloc(AVI_INDEX_CLUSTER_SIZE*sizeof(AVIIentry)); idx->cluster[cl] = av_malloc(AVI_INDEX_CLUSTER_SIZE*sizeof(AVIIentry));
if (!idx->cluster[cl]) if (!idx->cluster[cl])
return -1; return -1;
......
...@@ -879,9 +879,9 @@ static int dyn_buf_write(void *opaque, uint8_t *buf, int buf_size) ...@@ -879,9 +879,9 @@ static int dyn_buf_write(void *opaque, uint8_t *buf, int buf_size)
} }
if (new_allocated_size > d->allocated_size) { if (new_allocated_size > d->allocated_size) {
d->buffer = av_realloc(d->buffer, new_allocated_size); int err;
if(d->buffer == NULL) if ((err = av_reallocp(&d->buffer, new_allocated_size)) < 0)
return AVERROR(ENOMEM); return err;
d->allocated_size = new_allocated_size; d->allocated_size = new_allocated_size;
} }
memcpy(d->buffer + d->pos, buf, buf_size); memcpy(d->buffer + d->pos, buf, buf_size);
......
...@@ -71,7 +71,7 @@ static int bmv_read_header(AVFormatContext *s) ...@@ -71,7 +71,7 @@ static int bmv_read_header(AVFormatContext *s)
static int bmv_read_packet(AVFormatContext *s, AVPacket *pkt) static int bmv_read_packet(AVFormatContext *s, AVPacket *pkt)
{ {
BMVContext *c = s->priv_data; BMVContext *c = s->priv_data;
int type; int type, err;
void *tmp; void *tmp;
while (c->get_next) { while (c->get_next) {
...@@ -85,10 +85,8 @@ static int bmv_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -85,10 +85,8 @@ static int bmv_read_packet(AVFormatContext *s, AVPacket *pkt)
c->size = avio_rl24(s->pb); c->size = avio_rl24(s->pb);
if (!c->size) if (!c->size)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
tmp = av_realloc(c->packet, c->size + 1); if ((err = av_reallocp(&c->packet, c->size + 1)) < 0)
if (!tmp) return err;
return AVERROR(ENOMEM);
c->packet = tmp;
c->packet[0] = type; c->packet[0] = type;
if (avio_read(s->pb, c->packet + 1, c->size) != c->size) if (avio_read(s->pb, c->packet + 1, c->size) != c->size)
return AVERROR(EIO); return AVERROR(EIO);
......
...@@ -56,7 +56,7 @@ static av_cold int concat_close(URLContext *h) ...@@ -56,7 +56,7 @@ static av_cold int concat_close(URLContext *h)
static av_cold int concat_open(URLContext *h, const char *uri, int flags) static av_cold int concat_open(URLContext *h, const char *uri, int flags)
{ {
char *node_uri = NULL, *tmp_uri; char *node_uri = NULL;
int err = 0; int err = 0;
int64_t size; int64_t size;
size_t len, i; size_t len, i;
...@@ -85,11 +85,8 @@ static av_cold int concat_open(URLContext *h, const char *uri, int flags) ...@@ -85,11 +85,8 @@ static av_cold int concat_open(URLContext *h, const char *uri, int flags)
for (i = 0; *uri; i++) { for (i = 0; *uri; i++) {
/* parsing uri */ /* parsing uri */
len = strcspn(uri, AV_CAT_SEPARATOR); len = strcspn(uri, AV_CAT_SEPARATOR);
if (!(tmp_uri = av_realloc(node_uri, len+1))) { if ((err = av_reallocp(&node_uri, len + 1)) < 0)
err = AVERROR(ENOMEM);
break; break;
} else
node_uri = tmp_uri;
av_strlcpy(node_uri, uri, len+1); av_strlcpy(node_uri, uri, len+1);
uri += len + strspn(uri+len, AV_CAT_SEPARATOR); uri += len + strspn(uri+len, AV_CAT_SEPARATOR);
...@@ -114,10 +111,9 @@ static av_cold int concat_open(URLContext *h, const char *uri, int flags) ...@@ -114,10 +111,9 @@ static av_cold int concat_open(URLContext *h, const char *uri, int flags)
if (err < 0) if (err < 0)
concat_close(h); concat_close(h);
else if (!(nodes = av_realloc(nodes, data->length * sizeof(*nodes)))) { else if ((err = av_reallocp(&nodes, data->length * sizeof(*nodes))) < 0)
concat_close(h); concat_close(h);
err = AVERROR(ENOMEM); else
} else
data->nodes = nodes; data->nodes = nodes;
return err; return err;
} }
......
...@@ -331,16 +331,14 @@ static MMSSCPacketType get_tcp_server_response(MMSTContext *mmst) ...@@ -331,16 +331,14 @@ static MMSSCPacketType get_tcp_server_response(MMSTContext *mmst)
// if we successfully read everything. // if we successfully read everything.
if(packet_id_type == mmst->header_packet_id) { if(packet_id_type == mmst->header_packet_id) {
int err;
packet_type = SC_PKT_ASF_HEADER; packet_type = SC_PKT_ASF_HEADER;
// Store the asf header // Store the asf header
if(!mms->header_parsed) { if(!mms->header_parsed) {
void *p = av_realloc(mms->asf_header, if ((err = av_reallocp(&mms->asf_header,
mms->asf_header_size + mms->remaining_in_len); mms->asf_header_size +
if (!p) { mms->remaining_in_len)) < 0)
av_freep(&mms->asf_header); return err;
return AVERROR(ENOMEM);
}
mms->asf_header = p;
memcpy(mms->asf_header + mms->asf_header_size, memcpy(mms->asf_header + mms->asf_header_size,
mms->read_in_ptr, mms->remaining_in_len); mms->read_in_ptr, mms->remaining_in_len);
mms->asf_header_size += mms->remaining_in_len; mms->asf_header_size += mms->remaining_in_len;
......
...@@ -878,6 +878,7 @@ static int mov_read_extradata(MOVContext *c, AVIOContext *pb, MOVAtom atom) ...@@ -878,6 +878,7 @@ static int mov_read_extradata(MOVContext *c, AVIOContext *pb, MOVAtom atom)
AVStream *st; AVStream *st;
uint64_t size; uint64_t size;
uint8_t *buf; uint8_t *buf;
int err;
if (c->fc->nb_streams < 1) // will happen with jp2 files if (c->fc->nb_streams < 1) // will happen with jp2 files
return 0; return 0;
...@@ -885,11 +886,9 @@ static int mov_read_extradata(MOVContext *c, AVIOContext *pb, MOVAtom atom) ...@@ -885,11 +886,9 @@ static int mov_read_extradata(MOVContext *c, AVIOContext *pb, MOVAtom atom)
size= (uint64_t)st->codec->extradata_size + atom.size + 8 + FF_INPUT_BUFFER_PADDING_SIZE; size= (uint64_t)st->codec->extradata_size + atom.size + 8 + FF_INPUT_BUFFER_PADDING_SIZE;
if (size > INT_MAX || (uint64_t)atom.size > INT_MAX) if (size > INT_MAX || (uint64_t)atom.size > INT_MAX)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
buf= av_realloc(st->codec->extradata, size); if ((err = av_reallocp(&st->codec->extradata, size)) < 0)
if (!buf) return err;
return AVERROR(ENOMEM); buf = st->codec->extradata + st->codec->extradata_size;
st->codec->extradata= buf;
buf+= st->codec->extradata_size;
st->codec->extradata_size= size - FF_INPUT_BUFFER_PADDING_SIZE; st->codec->extradata_size= size - FF_INPUT_BUFFER_PADDING_SIZE;
AV_WB32( buf , atom.size + 8); AV_WB32( buf , atom.size + 8);
AV_WL32( buf + 4, atom.type); AV_WL32( buf + 4, atom.type);
......
...@@ -104,12 +104,9 @@ static void sample_queue_push(HintSampleQueue *queue, uint8_t *data, int size, ...@@ -104,12 +104,9 @@ static void sample_queue_push(HintSampleQueue *queue, uint8_t *data, int size,
if (size <= 14) if (size <= 14)
return; return;
if (!queue->samples || queue->len >= queue->size) { if (!queue->samples || queue->len >= queue->size) {
HintSample *samples;
queue->size += 10; queue->size += 10;
samples = av_realloc(queue->samples, sizeof(HintSample)*queue->size); if (av_reallocp(&queue->samples, sizeof(*queue->samples) * queue->size) < 0)
if (!samples)
return; return;
queue->samples = samples;
} }
queue->samples[queue->len].data = data; queue->samples[queue->len].data = data;
queue->samples[queue->len].size = size; queue->samples[queue->len].size = size;
......
...@@ -42,7 +42,7 @@ theora_header (AVFormatContext * s, int idx) ...@@ -42,7 +42,7 @@ theora_header (AVFormatContext * s, int idx)
struct ogg_stream *os = ogg->streams + idx; struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx]; AVStream *st = s->streams[idx];
struct theora_params *thp = os->private; struct theora_params *thp = os->private;
int cds = st->codec->extradata_size + os->psize + 2; int cds = st->codec->extradata_size + os->psize + 2, err;
uint8_t *cdp; uint8_t *cdp;
if(!(os->buf[os->pstart] & 0x80)) if(!(os->buf[os->pstart] & 0x80))
...@@ -123,8 +123,9 @@ theora_header (AVFormatContext * s, int idx) ...@@ -123,8 +123,9 @@ theora_header (AVFormatContext * s, int idx)
return -1; return -1;
} }
st->codec->extradata = av_realloc (st->codec->extradata, if ((err = av_reallocp(&st->codec->extradata,
cds + FF_INPUT_BUFFER_PADDING_SIZE); cds + FF_INPUT_BUFFER_PADDING_SIZE)) < 0)
return err;
cdp = st->codec->extradata + st->codec->extradata_size; cdp = st->codec->extradata + st->codec->extradata_size;
*cdp++ = os->psize >> 8; *cdp++ = os->psize >> 8;
*cdp++ = os->psize & 0xff; *cdp++ = os->psize & 0xff;
......
...@@ -173,7 +173,7 @@ static unsigned int ...@@ -173,7 +173,7 @@ static unsigned int
fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv, fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv,
uint8_t **buf) uint8_t **buf)
{ {
int i,offset, len; int i, offset, len, err;
unsigned char *ptr; unsigned char *ptr;
len = priv->len[0] + priv->len[1] + priv->len[2]; len = priv->len[0] + priv->len[1] + priv->len[2];
...@@ -188,7 +188,8 @@ fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv, ...@@ -188,7 +188,8 @@ fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv,
offset += priv->len[i]; offset += priv->len[i];
av_freep(&priv->packet[i]); av_freep(&priv->packet[i]);
} }
*buf = av_realloc(*buf, offset + FF_INPUT_BUFFER_PADDING_SIZE); if ((err = av_reallocp(buf, offset + FF_INPUT_BUFFER_PADDING_SIZE)) < 0)
return err;
return offset; return offset;
} }
......
...@@ -419,15 +419,14 @@ rdt_parse_sdp_line (AVFormatContext *s, int st_index, ...@@ -419,15 +419,14 @@ rdt_parse_sdp_line (AVFormatContext *s, int st_index,
for (n = 0; n < s->nb_streams; n++) for (n = 0; n < s->nb_streams; n++)
if (s->streams[n]->id == stream->id) { if (s->streams[n]->id == stream->id) {
int count = s->streams[n]->index + 1; int count = s->streams[n]->index + 1, err;
if (first == -1) first = n; if (first == -1) first = n;
if (rdt->nb_rmst < count) { if (rdt->nb_rmst < count) {
RMStream **rmst= av_realloc(rdt->rmst, count*sizeof(*rmst)); if ((err = av_reallocp(&rdt->rmst,
if (!rmst) count * sizeof(*rdt->rmst))) < 0)
return AVERROR(ENOMEM); return err;
memset(rmst + rdt->nb_rmst, 0, memset(rdt->rmst + rdt->nb_rmst, 0,
(count - rdt->nb_rmst) * sizeof(*rmst)); (count - rdt->nb_rmst) * sizeof(*rdt->rmst));
rdt->rmst = rmst;
rdt->nb_rmst = count; rdt->nb_rmst = count;
} }
rdt->rmst[s->streams[n]->index] = ff_rm_alloc_rmstream(); rdt->rmst[s->streams[n]->index] = ff_rm_alloc_rmstream();
......
...@@ -85,14 +85,12 @@ static int rtmp_http_send_cmd(URLContext *h, const char *cmd) ...@@ -85,14 +85,12 @@ static int rtmp_http_send_cmd(URLContext *h, const char *cmd)
static int rtmp_http_write(URLContext *h, const uint8_t *buf, int size) static int rtmp_http_write(URLContext *h, const uint8_t *buf, int size)
{ {
RTMP_HTTPContext *rt = h->priv_data; RTMP_HTTPContext *rt = h->priv_data;
void *ptr;
if (rt->out_size + size > rt->out_capacity) { if (rt->out_size + size > rt->out_capacity) {
int err;
rt->out_capacity = (rt->out_size + size) * 2; rt->out_capacity = (rt->out_size + size) * 2;
ptr = av_realloc(rt->out_data, rt->out_capacity); if ((err = av_reallocp(&rt->out_data, rt->out_capacity)) < 0)
if (!ptr) return err;
return AVERROR(ENOMEM);
rt->out_data = ptr;
} }
memcpy(rt->out_data + rt->out_size, buf, size); memcpy(rt->out_data + rt->out_size, buf, size);
......
...@@ -150,15 +150,13 @@ static const uint8_t rtmp_server_key[] = { ...@@ -150,15 +150,13 @@ static const uint8_t rtmp_server_key[] = {
static int add_tracked_method(RTMPContext *rt, const char *name, int id) static int add_tracked_method(RTMPContext *rt, const char *name, int id)
{ {
void *ptr; int err;
if (rt->nb_tracked_methods + 1 > rt->tracked_methods_size) { if (rt->nb_tracked_methods + 1 > rt->tracked_methods_size) {
rt->tracked_methods_size = (rt->nb_tracked_methods + 1) * 2; rt->tracked_methods_size = (rt->nb_tracked_methods + 1) * 2;
ptr = av_realloc(rt->tracked_methods, if ((err = av_reallocp(&rt->tracked_methods, rt->tracked_methods_size *
rt->tracked_methods_size * sizeof(*rt->tracked_methods)); sizeof(*rt->tracked_methods))) < 0)
if (!ptr) return err;
return AVERROR(ENOMEM);
rt->tracked_methods = ptr;
} }
rt->tracked_methods[rt->nb_tracked_methods].name = av_strdup(name); rt->tracked_methods[rt->nb_tracked_methods].name = av_strdup(name);
...@@ -2066,7 +2064,6 @@ static int handle_invoke(URLContext *s, RTMPPacket *pkt) ...@@ -2066,7 +2064,6 @@ static int handle_invoke(URLContext *s, RTMPPacket *pkt)
static int handle_notify(URLContext *s, RTMPPacket *pkt) { static int handle_notify(URLContext *s, RTMPPacket *pkt) {
RTMPContext *rt = s->priv_data; RTMPContext *rt = s->priv_data;
const uint8_t *p = NULL; const uint8_t *p = NULL;
uint8_t *cp = NULL;
uint8_t commandbuffer[64]; uint8_t commandbuffer[64];
char statusmsg[128]; char statusmsg[128];
int stringlen; int stringlen;
...@@ -2101,16 +2098,13 @@ static int handle_notify(URLContext *s, RTMPPacket *pkt) { ...@@ -2101,16 +2098,13 @@ static int handle_notify(URLContext *s, RTMPPacket *pkt) {
old_flv_size = rt->flv_size; old_flv_size = rt->flv_size;
rt->flv_size += datatowritelength + 15; rt->flv_size += datatowritelength + 15;
} else { } else {
int err;
old_flv_size = 0; old_flv_size = 0;
rt->flv_size = datatowritelength + 15; rt->flv_size = datatowritelength + 15;
rt->flv_off = 0; rt->flv_off = 0;
} if ((err = av_reallocp(&rt->flv_data, rt->flv_size)) < 0)
return err;
cp = av_realloc(rt->flv_data, rt->flv_size); bytestream2_init_writer(&pbc, rt->flv_data, rt->flv_size);
if (!cp)
return AVERROR(ENOMEM);
rt->flv_data = cp;
bytestream2_init_writer(&pbc, cp, rt->flv_size);
bytestream2_skip_p(&pbc, old_flv_size); bytestream2_skip_p(&pbc, old_flv_size);
bytestream2_put_byte(&pbc, pkt->type); bytestream2_put_byte(&pbc, pkt->type);
bytestream2_put_be24(&pbc, datatowritelength); bytestream2_put_be24(&pbc, datatowritelength);
...@@ -2119,7 +2113,7 @@ static int handle_notify(URLContext *s, RTMPPacket *pkt) { ...@@ -2119,7 +2113,7 @@ static int handle_notify(URLContext *s, RTMPPacket *pkt) {
bytestream2_put_be24(&pbc, 0); bytestream2_put_be24(&pbc, 0);
bytestream2_put_buffer(&pbc, datatowrite, datatowritelength); bytestream2_put_buffer(&pbc, datatowrite, datatowritelength);
bytestream2_put_be32(&pbc, 0); bytestream2_put_be32(&pbc, 0);
}
return 0; return 0;
} }
...@@ -2189,7 +2183,6 @@ static int get_packet(URLContext *s, int for_header) ...@@ -2189,7 +2183,6 @@ static int get_packet(URLContext *s, int for_header)
{ {
RTMPContext *rt = s->priv_data; RTMPContext *rt = s->priv_data;
int ret; int ret;
uint8_t *p;
const uint8_t *next; const uint8_t *next;
uint32_t size; uint32_t size;
uint32_t ts, cts, pts=0; uint32_t ts, cts, pts=0;
...@@ -2253,19 +2246,21 @@ static int get_packet(URLContext *s, int for_header) ...@@ -2253,19 +2246,21 @@ static int get_packet(URLContext *s, int for_header)
if (rpkt.type == RTMP_PT_VIDEO || rpkt.type == RTMP_PT_AUDIO || if (rpkt.type == RTMP_PT_VIDEO || rpkt.type == RTMP_PT_AUDIO ||
(rpkt.type == RTMP_PT_NOTIFY && (rpkt.type == RTMP_PT_NOTIFY &&
ff_amf_match_string(rpkt.data, rpkt.size, "onMetaData"))) { ff_amf_match_string(rpkt.data, rpkt.size, "onMetaData"))) {
int err;
ts = rpkt.timestamp; ts = rpkt.timestamp;
// generate packet header and put data into buffer for FLV demuxer // generate packet header and put data into buffer for FLV demuxer
rt->flv_off = 0; rt->flv_off = 0;
rt->flv_size = rpkt.size + 15; rt->flv_size = rpkt.size + 15;
rt->flv_data = p = av_realloc(rt->flv_data, rt->flv_size); if ((err = av_reallocp(&rt->flv_data, rt->flv_size)) < 0)
bytestream_put_byte(&p, rpkt.type); return err;
bytestream_put_be24(&p, rpkt.size); bytestream_put_byte(&rt->flv_data, rpkt.type);
bytestream_put_be24(&p, ts); bytestream_put_be24(&rt->flv_data, rpkt.size);
bytestream_put_byte(&p, ts >> 24); bytestream_put_be24(&rt->flv_data, ts);
bytestream_put_be24(&p, 0); bytestream_put_byte(&rt->flv_data, ts >> 24);
bytestream_put_buffer(&p, rpkt.data, rpkt.size); bytestream_put_be24(&rt->flv_data, 0);
bytestream_put_be32(&p, 0); bytestream_put_buffer(&rt->flv_data, rpkt.data, rpkt.size);
bytestream_put_be32(&rt->flv_data, 0);
ff_rtmp_packet_destroy(&rpkt); ff_rtmp_packet_destroy(&rpkt);
return 0; return 0;
} else if (rpkt.type == RTMP_PT_NOTIFY) { } else if (rpkt.type == RTMP_PT_NOTIFY) {
...@@ -2277,10 +2272,13 @@ static int get_packet(URLContext *s, int for_header) ...@@ -2277,10 +2272,13 @@ static int get_packet(URLContext *s, int for_header)
} }
return 0; return 0;
} else if (rpkt.type == RTMP_PT_METADATA) { } else if (rpkt.type == RTMP_PT_METADATA) {
int err;
uint8_t *p;
// we got raw FLV data, make it available for FLV demuxer // we got raw FLV data, make it available for FLV demuxer
rt->flv_off = 0; rt->flv_off = 0;
rt->flv_size = rpkt.size; rt->flv_size = rpkt.size;
rt->flv_data = av_realloc(rt->flv_data, rt->flv_size); if ((err = av_reallocp(&rt->flv_data, rt->flv_size)) < 0)
return err;
/* rewrite timestamps */ /* rewrite timestamps */
next = rpkt.data; next = rpkt.data;
ts = rpkt.timestamp; ts = rpkt.timestamp;
...@@ -2549,9 +2547,11 @@ reconnect: ...@@ -2549,9 +2547,11 @@ reconnect:
} }
if (rt->is_input) { if (rt->is_input) {
int err;
// generate FLV header for demuxer // generate FLV header for demuxer
rt->flv_size = 13; rt->flv_size = 13;
rt->flv_data = av_realloc(rt->flv_data, rt->flv_size); if ((err = av_reallocp(&rt->flv_data, rt->flv_size)) < 0)
return err;
rt->flv_off = 0; rt->flv_off = 0;
memcpy(rt->flv_data, "FLV\1\5\0\0\0\011\0\0\0\0", rt->flv_size); memcpy(rt->flv_data, "FLV\1\5\0\0\0\011\0\0\0\0", rt->flv_size);
} else { } else {
......
...@@ -239,14 +239,11 @@ static int asfrtp_parse_packet(AVFormatContext *s, PayloadContext *asf, ...@@ -239,14 +239,11 @@ static int asfrtp_parse_packet(AVFormatContext *s, PayloadContext *asf,
int cur_len = start_off + len_off - off; int cur_len = start_off + len_off - off;
int prev_len = out_len; int prev_len = out_len;
void *newmem;
out_len += cur_len; out_len += cur_len;
if (FFMIN(cur_len, len - off) < 0) if (FFMIN(cur_len, len - off) < 0)
return -1; return -1;
newmem = av_realloc(asf->buf, out_len); if ((res = av_reallocp(&asf->buf, out_len)) < 0)
if (!newmem) return res;
return -1;
asf->buf = newmem;
memcpy(asf->buf + prev_len, buf + off, memcpy(asf->buf + prev_len, buf + off,
FFMIN(cur_len, len - off)); FFMIN(cur_len, len - off));
avio_skip(pb, cur_len); avio_skip(pb, cur_len);
......
...@@ -172,8 +172,10 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, ...@@ -172,8 +172,10 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt,
switch (packing_scheme) { switch (packing_scheme) {
case 3: /* one data packet spread over 1 or multiple RTP packets */ case 3: /* one data packet spread over 1 or multiple RTP packets */
if (qt->pkt.size > 0 && qt->timestamp == *timestamp) { if (qt->pkt.size > 0 && qt->timestamp == *timestamp) {
qt->pkt.data = av_realloc(qt->pkt.data, qt->pkt.size + alen + int err;
FF_INPUT_BUFFER_PADDING_SIZE); if ((err = av_reallocp(&qt->pkt.data, qt->pkt.size + alen +
FF_INPUT_BUFFER_PADDING_SIZE)) < 0)
return err;
} else { } else {
av_freep(&qt->pkt.data); av_freep(&qt->pkt.data);
av_init_packet(&qt->pkt); av_init_packet(&qt->pkt);
...@@ -181,8 +183,6 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt, ...@@ -181,8 +183,6 @@ static int qt_rtp_parse_packet(AVFormatContext *s, PayloadContext *qt,
qt->pkt.size = 0; qt->pkt.size = 0;
qt->timestamp = *timestamp; qt->timestamp = *timestamp;
} }
if (!qt->pkt.data)
return AVERROR(ENOMEM);
memcpy(qt->pkt.data + qt->pkt.size, buf + avio_tell(&pb), alen); memcpy(qt->pkt.data + qt->pkt.size, buf + avio_tell(&pb), alen);
qt->pkt.size += alen; qt->pkt.size += alen;
if (has_marker_bit) { if (has_marker_bit) {
......
...@@ -305,7 +305,7 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -305,7 +305,7 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt)
for(i = 0; i < 7; i++) { for(i = 0; i < 7; i++) {
if(flags & 1) { if(flags & 1) {
uint32_t size; uint32_t size;
uint8_t *tmpbuf; int err;
size = avio_rl32(s->pb) - 4; size = avio_rl32(s->pb) - 4;
if (!size || size > frame_size) { if (!size || size > frame_size) {
...@@ -315,10 +315,8 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -315,10 +315,8 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt)
frame_size -= size; frame_size -= size;
frame_size -= 4; frame_size -= 4;
smk->curstream++; smk->curstream++;
tmpbuf = av_realloc(smk->bufs[smk->curstream], size); if ((err = av_reallocp(&smk->bufs[smk->curstream], size)) < 0)
if (!tmpbuf) return err;
return AVERROR(ENOMEM);
smk->bufs[smk->curstream] = tmpbuf;
smk->buf_sizes[smk->curstream] = size; smk->buf_sizes[smk->curstream] = size;
ret = avio_read(s->pb, smk->bufs[smk->curstream], size); ret = avio_read(s->pb, smk->bufs[smk->curstream], size);
if(ret != size) if(ret != size)
......
...@@ -445,12 +445,13 @@ fail: ...@@ -445,12 +445,13 @@ fail:
static int add_fragment(OutputStream *os, const char *file, const char *infofile, int64_t start_time, int64_t duration, int64_t start_pos, int64_t size) static int add_fragment(OutputStream *os, const char *file, const char *infofile, int64_t start_time, int64_t duration, int64_t start_pos, int64_t size)
{ {
int err;
Fragment *frag; Fragment *frag;
if (os->nb_fragments >= os->fragments_size) { if (os->nb_fragments >= os->fragments_size) {
os->fragments_size = (os->fragments_size + 1) * 2; os->fragments_size = (os->fragments_size + 1) * 2;
os->fragments = av_realloc(os->fragments, sizeof(*os->fragments)*os->fragments_size); if ((err = av_reallocp(&os->fragments, sizeof(*os->fragments) *
if (!os->fragments) os->fragments_size)) < 0)
return AVERROR(ENOMEM); return err;
} }
frag = av_mallocz(sizeof(*frag)); frag = av_mallocz(sizeof(*frag));
if (!frag) if (!frag)
......
...@@ -266,7 +266,8 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, ...@@ -266,7 +266,8 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
} }
/* read probe data */ /* read probe data */
buf = av_realloc(buf, probe_size + AVPROBE_PADDING_SIZE); if ((ret = av_reallocp(&buf, probe_size + AVPROBE_PADDING_SIZE)) < 0)
return ret;
if ((ret = avio_read(pb, buf + buf_offset, probe_size - buf_offset)) < 0) { if ((ret = avio_read(pb, buf + buf_offset, probe_size - buf_offset)) < 0) {
/* fail if error was not end of file, otherwise, lower score */ /* fail if error was not end of file, otherwise, lower score */
if (ret != AVERROR_EOF) { if (ret != AVERROR_EOF) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment