diff options
author | Anton Khirnov <anton@khirnov.net> | 2021-04-08 11:16:06 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2021-06-10 16:59:50 +0200 |
commit | c8778606b3811da6bd58ca6b73d2446bd430013e (patch) | |
tree | d8a77451703b810dcaf4c6f8442471f0baaa432a | |
parent | 1256b71ba9509ed670e82ed95cad8e45e9866c3a (diff) | |
download | ffmpeg-c8778606b3811da6bd58ca6b73d2446bd430013e.tar.gz |
lavu/video_enc_params: make sure blocks are properly aligned
-rw-r--r-- | libavutil/video_enc_params.c | 10 |
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; |