par->width = fsize > 4000 ? (160<<3) : (80<<3);
}
-static int bin_probe(AVProbeData *p)
+static int bin_probe(const AVProbeData *p)
{
const uint8_t *d = p->buf;
int magic = 0, sauce = 0;
return AVPROBE_SCORE_EXTENSION + 1;
predict_width(&par, p->buf_size, got_width);
- if (par.width <= 0)
+ if (par.width < 8)
return 0;
calculate_height(&par, p->buf_size);
if (par.height <= 0)
{
BinDemuxContext *bin = s->priv_data;
AVIOContext *pb = s->pb;
-
+ int ret;
AVStream *st = init_stream(s);
if (!st)
return AVERROR(ENOMEM);
st->codecpar->codec_id = AV_CODEC_ID_BINTEXT;
- if (ff_alloc_extradata(st->codecpar, 2))
- return AVERROR(ENOMEM);
+ if ((ret = ff_alloc_extradata(st->codecpar, 2)) < 0)
+ return ret;
st->codecpar->extradata[0] = 16;
st->codecpar->extradata[1] = 0;
next_tag_read(s, &bin->fsize);
if (!bin->width) {
predict_width(st->codecpar, bin->fsize, got_width);
+ if (st->codecpar->width < 8)
+ return AVERROR_INVALIDDATA;
calculate_height(st->codecpar, bin->fsize);
}
avio_seek(pb, 0, SEEK_SET);
#endif /* CONFIG_BINTEXT_DEMUXER */
#if CONFIG_XBIN_DEMUXER
-static int xbin_probe(AVProbeData *p)
+static int xbin_probe(const AVProbeData *p)
{
const uint8_t *d = p->buf;
BinDemuxContext *bin = s->priv_data;
AVIOContext *pb = s->pb;
char fontheight, flags;
-
+ int ret;
AVStream *st = init_stream(s);
if (!st)
return AVERROR(ENOMEM);
st->codecpar->extradata_size += fontheight * (flags & 0x10 ? 512 : 256);
st->codecpar->codec_id = flags & 4 ? AV_CODEC_ID_XBIN : AV_CODEC_ID_BINTEXT;
- if (ff_alloc_extradata(st->codecpar, st->codecpar->extradata_size))
- return AVERROR(ENOMEM);
+ ret = ff_alloc_extradata(st->codecpar, st->codecpar->extradata_size);
+ if (ret < 0)
+ return ret;
st->codecpar->extradata[0] = fontheight;
st->codecpar->extradata[1] = flags;
if (avio_read(pb, st->codecpar->extradata + 2, st->codecpar->extradata_size - 2) < 0)
BinDemuxContext *bin = s->priv_data;
AVIOContext *pb = s->pb;
AVStream *st;
+ int ret;
if (avio_r8(pb) != 1)
return AVERROR_INVALIDDATA;
return AVERROR(ENOMEM);
st->codecpar->codec_id = AV_CODEC_ID_BINTEXT;
- if (ff_alloc_extradata(st->codecpar, 2 + 48 + 4096))
- return AVERROR(ENOMEM);
+ if ((ret = ff_alloc_extradata(st->codecpar, 2 + 48 + 4096)) < 0)
+ return ret;
st->codecpar->extradata[0] = 16;
st->codecpar->extradata[1] = BINTEXT_PALETTE|BINTEXT_FONT;
0x04, 0x31, 0x2e, 0x34, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x15, 0x00
};
-static int idf_probe(AVProbeData *p)
+static int idf_probe(const AVProbeData *p)
{
if (p->buf_size < sizeof(idf_magic))
return 0;
BinDemuxContext *bin = s->priv_data;
AVIOContext *pb = s->pb;
AVStream *st;
- int got_width = 0;
+ int got_width = 0, ret;
if (!(pb->seekable & AVIO_SEEKABLE_NORMAL))
return AVERROR(EIO);
return AVERROR(ENOMEM);
st->codecpar->codec_id = AV_CODEC_ID_IDF;
- if (ff_alloc_extradata(st->codecpar, 2 + 48 + 4096))
- return AVERROR(ENOMEM);
+ if ((ret = ff_alloc_extradata(st->codecpar, 2 + 48 + 4096)) < 0)
+ return ret;
st->codecpar->extradata[0] = 16;
st->codecpar->extradata[1] = BINTEXT_PALETTE|BINTEXT_FONT;