Up until now, av_aes_init() uses a->round_key[0].u8 + t as dst of memcpy where it is intended for t to be greater than 16 (u8 is an uint8_t[16]); given that round_key itself is an array, it is actually intended for dst to be in a latter round_key member. To do this properly, just cast a->round_key to unsigned char*.
This fixes the srtp, aes, aes_ctr, mov-3elist-encrypted, mov-frag-encrypted and mov-tenc-only-encrypted FATE-tests with (Clang-)UBSan. Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> --- libavutil/aes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavutil/aes.c b/libavutil/aes.c index 8b78daa782..2f08fb4164 100644 --- a/libavutil/aes.c +++ b/libavutil/aes.c @@ -253,7 +253,7 @@ int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt) tk[j][i] ^= sbox[tk[j - 1][i]]; } - memcpy(a->round_key[0].u8 + t, tk, KC * 4); + memcpy((unsigned char*)a->round_key + t, tk, KC * 4); } if (decrypt) { -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".