[FFmpeg-devel] [PATCH 2/3] avcodec: use AV_PKT_MAX_PAYLOAD_SIZE
James Almer
jamrial at gmail.com
Wed Jun 21 23:46:57 EEST 2023
Signed-off-by: James Almer <jamrial at gmail.com>
---
libavcodec/avpacket.c | 6 +++---
libavcodec/dvdsub_parser.c | 2 +-
libavcodec/encode.c | 10 +++++-----
libavcodec/ffv1enc.c | 4 ++--
libavcodec/h264_mp4toannexb_bsf.c | 2 +-
libavcodec/libopenjpegenc.c | 6 +++---
6 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
index 5fef65e97a..cdf7edc23c 100644
--- a/libavcodec/avpacket.c
+++ b/libavcodec/avpacket.c
@@ -82,7 +82,7 @@ void av_packet_free(AVPacket **pkt)
static int packet_alloc(AVBufferRef **buf, int size)
{
int ret;
- if (size < 0 || size >= INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
+ if (size < 0 || size >= AV_PKT_MAX_PAYLOAD_SIZE)
return AVERROR(EINVAL);
ret = av_buffer_realloc(buf, size + AV_INPUT_BUFFER_PADDING_SIZE);
@@ -120,7 +120,7 @@ void av_shrink_packet(AVPacket *pkt, int size)
int av_grow_packet(AVPacket *pkt, int grow_by)
{
int new_size;
- av_assert0((unsigned)pkt->size <= INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE);
+ av_assert0((unsigned)pkt->size <= AV_PKT_MAX_PAYLOAD_SIZE);
if ((unsigned)grow_by >
INT_MAX - (pkt->size + AV_INPUT_BUFFER_PADDING_SIZE))
return AVERROR(ENOMEM);
@@ -170,7 +170,7 @@ int av_grow_packet(AVPacket *pkt, int grow_by)
int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size)
{
- if (size >= INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
+ if (size >= AV_PKT_MAX_PAYLOAD_SIZE)
return AVERROR(EINVAL);
pkt->buf = av_buffer_create(data, size + AV_INPUT_BUFFER_PADDING_SIZE,
diff --git a/libavcodec/dvdsub_parser.c b/libavcodec/dvdsub_parser.c
index 8871b6a383..1589a543df 100644
--- a/libavcodec/dvdsub_parser.c
+++ b/libavcodec/dvdsub_parser.c
@@ -52,7 +52,7 @@ static int dvdsub_parse(AVCodecParserContext *s,
if (pc->packet_len == 0) /* HD-DVD subpicture packet */
pc->packet_len = AV_RB32(buf+2);
av_freep(&pc->packet);
- if ((unsigned)pc->packet_len > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) {
+ if ((unsigned)pc->packet_len > AV_PKT_MAX_PAYLOAD_SIZE) {
av_log(avctx, AV_LOG_ERROR, "packet length %d is invalid\n", pc->packet_len);
return buf_size;
}
diff --git a/libavcodec/encode.c b/libavcodec/encode.c
index ab5f889615..7bc14c7fc5 100644
--- a/libavcodec/encode.c
+++ b/libavcodec/encode.c
@@ -34,9 +34,9 @@
int ff_alloc_packet(AVCodecContext *avctx, AVPacket *avpkt, int64_t size)
{
- if (size < 0 || size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) {
- av_log(avctx, AV_LOG_ERROR, "Invalid minimum required packet size %"PRId64" (max allowed is %d)\n",
- size, INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE);
+ if (size < 0 || size > AV_PKT_MAX_PAYLOAD_SIZE) {
+ av_log(avctx, AV_LOG_ERROR, "Invalid minimum required packet size %"PRId64" (max allowed is %"SIZE_SPECIFIER")\n",
+ size, AV_PKT_MAX_PAYLOAD_SIZE);
return AVERROR(EINVAL);
}
@@ -58,7 +58,7 @@ int avcodec_default_get_encode_buffer(AVCodecContext *avctx, AVPacket *avpkt, in
{
int ret;
- if (avpkt->size < 0 || avpkt->size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
+ if (avpkt->size < 0 || avpkt->size > AV_PKT_MAX_PAYLOAD_SIZE)
return AVERROR(EINVAL);
if (avpkt->data || avpkt->buf) {
@@ -80,7 +80,7 @@ int ff_get_encode_buffer(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, i
{
int ret;
- if (size < 0 || size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
+ if (size < 0 || size > AV_PKT_MAX_PAYLOAD_SIZE)
return AVERROR(EINVAL);
av_assert0(!avpkt->data && !avpkt->buf);
diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 746f717568..b1c9f19e83 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1152,9 +1152,9 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
if (f->version > 3)
maxsize = AV_INPUT_BUFFER_MIN_SIZE + avctx->width*avctx->height*3LL*4;
- if (maxsize > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE - 32) {
+ if (maxsize > AV_PKT_MAX_PAYLOAD_SIZE - 32) {
av_log(avctx, AV_LOG_WARNING, "Cannot allocate worst case packet size, the encoding could fail\n");
- maxsize = INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE - 32;
+ maxsize = AV_PKT_MAX_PAYLOAD_SIZE - 32;
}
if ((ret = ff_alloc_packet(avctx, pkt, maxsize)) < 0)
diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c
index d11be455c2..20142b90aa 100644
--- a/libavcodec/h264_mp4toannexb_bsf.c
+++ b/libavcodec/h264_mp4toannexb_bsf.c
@@ -269,7 +269,7 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt)
} while (buf < buf_end);
if (!j) {
- if (out_size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) {
+ if (out_size > AV_PKT_MAX_PAYLOAD_SIZE) {
ret = AVERROR_INVALIDDATA;
goto fail;
}
diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c
index 009c7a4377..c88c3d0102 100644
--- a/libavcodec/libopenjpegenc.c
+++ b/libavcodec/libopenjpegenc.c
@@ -73,7 +73,7 @@ static OPJ_SIZE_T stream_write(void *out_buffer, OPJ_SIZE_T nb_bytes, void *user
int remaining = packet->size - writer->pos;
if (nb_bytes > remaining) {
OPJ_SIZE_T needed = nb_bytes - remaining;
- int max_growth = INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE - packet->size;
+ int max_growth = AV_PKT_MAX_PAYLOAD_SIZE - packet->size;
if (needed > max_growth) {
return (OPJ_SIZE_T)-1;
}
@@ -101,7 +101,7 @@ static OPJ_OFF_T stream_skip(OPJ_OFF_T nb_bytes, void *user_data)
int remaining = packet->size - writer->pos;
if (nb_bytes > remaining) {
OPJ_SIZE_T needed = nb_bytes - remaining;
- int max_growth = INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE - packet->size;
+ int max_growth = AV_PKT_MAX_PAYLOAD_SIZE - packet->size;
if (needed > max_growth) {
return (OPJ_SIZE_T)-1;
}
@@ -122,7 +122,7 @@ static OPJ_BOOL stream_seek(OPJ_OFF_T nb_bytes, void *user_data)
return OPJ_FALSE;
}
if (nb_bytes > packet->size) {
- if (nb_bytes > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE ||
+ if (nb_bytes > AV_PKT_MAX_PAYLOAD_SIZE ||
av_grow_packet(packet, (int)nb_bytes - packet->size)) {
return OPJ_FALSE;
}
--
2.41.0
More information about the ffmpeg-devel
mailing list