mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
ffmpeg: Allocate new buffer for bitstream filter when buffer shifted
fix crash with aac_adtstoasc bitstream filter Fixes Ticket1441 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
a0d15027e3
commit
969267482d
10
ffmpeg.c
10
ffmpeg.c
@ -534,6 +534,16 @@ static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost)
|
|||||||
&new_pkt.data, &new_pkt.size,
|
&new_pkt.data, &new_pkt.size,
|
||||||
pkt->data, pkt->size,
|
pkt->data, pkt->size,
|
||||||
pkt->flags & AV_PKT_FLAG_KEY);
|
pkt->flags & AV_PKT_FLAG_KEY);
|
||||||
|
if(a == 0 && new_pkt.data != pkt->data && new_pkt.destruct) {
|
||||||
|
uint8_t *t = av_malloc(new_pkt.size + FF_INPUT_BUFFER_PADDING_SIZE); //the new should be a subset of the old so cannot overflow
|
||||||
|
if(t) {
|
||||||
|
memcpy(t, new_pkt.data, new_pkt.size);
|
||||||
|
memset(t + new_pkt.size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
|
||||||
|
new_pkt.data = t;
|
||||||
|
a = 1;
|
||||||
|
} else
|
||||||
|
a = AVERROR(ENOMEM);
|
||||||
|
}
|
||||||
if (a > 0) {
|
if (a > 0) {
|
||||||
av_free_packet(pkt);
|
av_free_packet(pkt);
|
||||||
new_pkt.destruct = av_destruct_packet;
|
new_pkt.destruct = av_destruct_packet;
|
||||||
|
Loading…
Reference in New Issue
Block a user