Commit 3cdbbdaaa8 for ffmpeg

commit 3cdbbdaaa8205b2c25fecf3a2eb168757e050535
Author: Marvin Scholz <epirat07@gmail.com>
Date:   Thu Oct 29 22:33:46 2026 +0000

    avcodec/4xm: fix unaligned access

    Using bswap_buf on unaligned bitstream chunk from packet directly is
    undefined behavior. Copy to bitstream_buffer first which is fully
    aligned.

    Signed-off-by: Marvin Scholz <epirat07@gmail.com>

diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c
index c6b2ce1230..78bc390809 100644
--- a/libavcodec/4xm.c
+++ b/libavcodec/4xm.c
@@ -469,7 +469,8 @@ static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length)
                           bitstream_size);
     if (!f->bitstream_buffer)
         return AVERROR(ENOMEM);
-    f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *) (buf + extra),
+    memcpy(f->bitstream_buffer, buf + extra, bitstream_size);
+    f->bbdsp.bswap_buf(f->bitstream_buffer, f->bitstream_buffer,
                        bitstream_size / 4);
     init_get_bits(&f->gb, f->bitstream_buffer, 8 * bitstream_size);

@@ -813,7 +814,8 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length)
                           prestream_size);
     if (!f->bitstream_buffer)
         return AVERROR(ENOMEM);
-    f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *) prestream,
+    memcpy(f->bitstream_buffer, prestream, prestream_size);
+    f->bbdsp.bswap_buf(f->bitstream_buffer, f->bitstream_buffer,
                        prestream_size / 4);
     init_get_bits(&f->pre_gb, f->bitstream_buffer, 8 * prestream_size);