[FFmpeg-devel] [PATCH 3/3] avcodec/avpacket: Don't write into non-writable buffer
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Tue Apr 28 16:39:51 EEST 2020
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
More information about the ffmpeg-devel
mailing list