aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-04-08 11:16:06 +0200
committerAnton Khirnov <anton@khirnov.net>2021-06-10 16:59:50 +0200
commitc8778606b3811da6bd58ca6b73d2446bd430013e (patch)
treed8a77451703b810dcaf4c6f8442471f0baaa432a
parent1256b71ba9509ed670e82ed95cad8e45e9866c3a (diff)
downloadffmpeg-c8778606b3811da6bd58ca6b73d2446bd430013e.tar.gz
lavu/video_enc_params: make sure blocks are properly aligned
-rw-r--r--libavutil/video_enc_params.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libavutil/video_enc_params.c b/libavutil/video_enc_params.c
index b9cdafddbb..7d903af385 100644
--- a/libavutil/video_enc_params.c
+++ b/libavutil/video_enc_params.c
@@ -29,10 +29,14 @@
AVVideoEncParams *av_video_enc_params_alloc(enum AVVideoEncParamsType type,
unsigned int nb_blocks, size_t *out_size)
{
+ const size_t blocks_offset = offsetof(
+ struct {
+ AVVideoEncParams p;
+ AVVideoBlockParams b;
+ }, b);
+ size_t size = blocks_offset;
AVVideoEncParams *par;
- size_t size;
- size = sizeof(*par);
if (nb_blocks > (SIZE_MAX - size) / sizeof(AVVideoBlockParams))
return NULL;
size += sizeof(AVVideoBlockParams) * nb_blocks;
@@ -44,7 +48,7 @@ AVVideoEncParams *av_video_enc_params_alloc(enum AVVideoEncParamsType type,
par->type = type;
par->nb_blocks = nb_blocks;
par->block_size = sizeof(AVVideoBlockParams);
- par->blocks_offset = sizeof(*par);
+ par->blocks_offset = blocks_offset;
if (out_size)
*out_size = size;