Prevents leaking the previously allocated buffer, honoring the expected behavior of keeping the packet unchanged in case of error.
Signed-off-by: James Almer <[email protected]> --- Now using av_reallocp() as suggested. Should still be backported to release/12. libavcodec/avpacket.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index f2b0a29..863659c 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -240,15 +240,14 @@ FF_ENABLE_DEPRECATION_WARNINGS int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, uint8_t *data, size_t size) { - int elems = pkt->side_data_elems; + int ret, elems = pkt->side_data_elems; if ((unsigned)elems + 1 > INT_MAX / sizeof(*pkt->side_data)) return AVERROR(ERANGE); - pkt->side_data = av_realloc(pkt->side_data, - (elems + 1) * sizeof(*pkt->side_data)); - if (!pkt->side_data) - return AVERROR(ENOMEM); + ret = av_reallocp(&pkt->side_data, (elems + 1) * sizeof(*pkt->side_data)); + if (ret < 0) + return ret; pkt->side_data[elems].data = data; pkt->side_data[elems].size = size; -- 2.10.1 _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
