size = avio_rb32(pb);
avio_skip(pb, 4);
+ if (size < 1 || size > INT_MAX/4) {
+ av_log(s, AV_LOG_ERROR, "size %u is invalid\n", size);
+ return AVERROR_INVALIDDATA;
+ }
+
st = s->streams[index];
ret = ff_rm_parse_packet(s, pb, st, st->priv_data, size, pkt,
&seq, 0, pts);
return AVERROR_EOF;
}
} else {
- av_log(s, AV_LOG_ERROR, "Unsupported opcode=%d at %lX\n", opcode, avio_tell(pb) - 1);
+ av_log(s, AV_LOG_ERROR, "Unsupported opcode=%d at %"PRIX64"\n", opcode, avio_tell(pb) - 1);
return AVERROR(EIO);
}
}
.read_probe = ivr_probe,
.read_header = ivr_read_header,
.read_packet = ivr_read_packet,
+ .read_close = rm_read_close,
.extensions = "ivr",
};