[FFmpeg-devel] [PATCH 3/3] avcodec/avpacket: Don't write into non-writable buffer

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Thu Apr 30 18:48:26 EEST 2020


Andreas Rheinhardt:
> Andreas Rheinhardt:
>> The data of an AVPacket may be a part of the data of an AVBufferRef;
>> Therefore av_grow_packet() doesn't reallocate if the available space in
>> the actual buffer is sufficient for the enlargement. But given that it
>> also zeroes the padding it also needs to make sure that the buffer is
>> actually writable; this commit implements this.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
>> ---
>>  libavcodec/avpacket.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
>> index 0d9ddeee07..a7b0b6bd5d 100644
>> --- a/libavcodec/avpacket.c
>> +++ b/libavcodec/avpacket.c
>> @@ -127,7 +127,8 @@ int av_grow_packet(AVPacket *pkt, int grow_by)
>>                  return AVERROR(ENOMEM);
>>          }
>>  
>> -        if (new_size + data_offset > pkt->buf->size) {
>> +        if (new_size + data_offset > pkt->buf->size ||
>> +            !av_buffer_is_writable(pkt->buf)) {
>>              int ret = av_buffer_realloc(&pkt->buf, new_size + data_offset);
>>              if (ret < 0) {
>>                  pkt->data = old_data;
>>
> Will apply tomorrow if there are no objections.
> 
> - Andreas
> 
Applied.

- Andreas


More information about the ffmpeg-devel mailing list