avformat/brstm: remove custom allocation of table to hold coeffs

This commit is contained in:
Paul B Mahol 2020-09-12 14:49:15 +02:00
parent 3382b0290a
commit 60c4459075

View File

@ -38,7 +38,7 @@ typedef struct BRSTMDemuxContext {
uint32_t last_block_size;
uint32_t last_block_samples;
uint32_t data_start;
uint8_t *table;
uint8_t table[256 * 32];
uint8_t *adpc;
BRSTMCoeffOffset offsets[256];
int little_endian;
@ -67,7 +67,6 @@ static int read_close(AVFormatContext *s)
{
BRSTMDemuxContext *b = s->priv_data;
av_freep(&b->table);
av_freep(&b->adpc);
return 0;
@ -284,9 +283,6 @@ static int read_header(AVFormatContext *s)
}
avio_skip(s->pb, pos + toffset - avio_tell(s->pb));
b->table = av_mallocz(32 * st->codecpar->channels);
if (!b->table)
return AVERROR(ENOMEM);
for (ch = 0; ch < st->codecpar->channels; ch++) {
if (!bfstm)
@ -422,11 +418,6 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt)
av_log(s, AV_LOG_ERROR, "adpcm_thp requires ADPC chunk, but none was found.\n");
return AVERROR_INVALIDDATA;
}
if (!b->table) {
b->table = av_mallocz(32 * par->channels);
if (!b->table)
return AVERROR(ENOMEM);
}
if (size > (INT_MAX - 32 - 4) ||
(32 + 4 + size) > (INT_MAX / par->channels) ||