Check for alloc failures.
Originally committed as revision 17497 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
8ebe099ac0
commit
c60a0f85ee
@ -718,7 +718,7 @@ resync:
|
|||||||
if(avi->stream_index >= 0){
|
if(avi->stream_index >= 0){
|
||||||
AVStream *st= s->streams[ avi->stream_index ];
|
AVStream *st= s->streams[ avi->stream_index ];
|
||||||
AVIStream *ast= st->priv_data;
|
AVIStream *ast= st->priv_data;
|
||||||
int size;
|
int size, err;
|
||||||
|
|
||||||
if(ast->sample_size <= 1) // minorityreport.AVI block_align=1024 sample_size=1 IMA-ADPCM
|
if(ast->sample_size <= 1) // minorityreport.AVI block_align=1024 sample_size=1 IMA-ADPCM
|
||||||
size= INT_MAX;
|
size= INT_MAX;
|
||||||
@ -730,14 +730,19 @@ resync:
|
|||||||
if(size > ast->remaining)
|
if(size > ast->remaining)
|
||||||
size= ast->remaining;
|
size= ast->remaining;
|
||||||
avi->last_pkt_pos= url_ftell(pb);
|
avi->last_pkt_pos= url_ftell(pb);
|
||||||
av_get_packet(pb, pkt, size);
|
err= av_get_packet(pb, pkt, size);
|
||||||
|
if(err<0)
|
||||||
|
return err;
|
||||||
|
|
||||||
if(ast->has_pal && pkt->data && pkt->size<(unsigned)INT_MAX/2){
|
if(ast->has_pal && pkt->data && pkt->size<(unsigned)INT_MAX/2){
|
||||||
|
void *ptr= av_realloc(pkt->data, pkt->size + 4*256 + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||||
|
if(ptr){
|
||||||
ast->has_pal=0;
|
ast->has_pal=0;
|
||||||
pkt->size += 4*256;
|
pkt->size += 4*256;
|
||||||
pkt->data = av_realloc(pkt->data, pkt->size + FF_INPUT_BUFFER_PADDING_SIZE);
|
pkt->data= ptr;
|
||||||
if(pkt->data)
|
|
||||||
memcpy(pkt->data + pkt->size - 4*256, ast->pal, 4*256);
|
memcpy(pkt->data + pkt->size - 4*256, ast->pal, 4*256);
|
||||||
|
}else
|
||||||
|
av_log(s, AV_LOG_ERROR, "Failed to append palette\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CONFIG_DV_DEMUXER && avi->dv_demux) {
|
if (CONFIG_DV_DEMUXER && avi->dv_demux) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user