uint8_t magic[8];
int64_t pos = avio_tell(s->pb);
avio_skip(s->pb, nsegs);
- avio_read(s->pb, magic, sizeof(magic));
+ if (avio_read(s->pb, magic, sizeof(magic)) != sizeof(magic))
+ return AVERROR_INVALIDDATA;
avio_seek(s->pb, pos, SEEK_SET);
codec = ogg_find_codec(magic, sizeof(magic));
if (!codec) {
avio_skip(bc, 8); /* seq, crc */
nsegs = avio_r8(bc);
+ if (avio_feof(bc))
+ return AVERROR_EOF;
+
idx = ogg_find_stream(ogg, serial);
if (idx < 0) {
if (data_packets_seen(ogg))
AV_PKT_DATA_SKIP_SAMPLES,
10);
if(!side_data)
- goto fail;
+ return AVERROR(ENOMEM);
AV_WL32(side_data + 4, os->end_trimming);
os->end_trimming = 0;
}
AV_PKT_DATA_METADATA_UPDATE,
os->new_metadata_size);
if(!side_data)
- goto fail;
+ return AVERROR(ENOMEM);
memcpy(side_data, os->new_metadata, os->new_metadata_size);
av_freep(&os->new_metadata);
}
return psize;
-fail:
- av_packet_unref(pkt);
- return AVERROR(ENOMEM);
}
static int64_t ogg_read_timestamp(AVFormatContext *s, int stream_index,
return ret;
}
-static int ogg_probe(AVProbeData *p)
+static int ogg_probe(const AVProbeData *p)
{
if (!memcmp("OggS", p->buf, 5) && p->buf[5] <= 0x7)
return AVPROBE_SCORE_MAX;