tools/target_dec_fuzzer: Fix misaligned read
[ffmpeg.git] / tools / target_dec_fuzzer.c
index 533aa37..cb3bc50 100644 (file)
@@ -46,6 +46,7 @@
 */
 
 #include "libavutil/avassert.h"
 */
 
 #include "libavutil/avassert.h"
+#include "libavutil/intreadwrite.h"
 
 #include "libavcodec/avcodec.h"
 #include "libavformat/avformat.h"
 
 #include "libavcodec/avcodec.h"
 #include "libavformat/avformat.h"
@@ -165,7 +166,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
     while (data < end && it < maxiteration) {
         // Search for the TAG
         while (data + sizeof(fuzz_tag) < end) {
     while (data < end && it < maxiteration) {
         // Search for the TAG
         while (data + sizeof(fuzz_tag) < end) {
-            if (data[0] == (fuzz_tag & 0xFF) && *(const uint64_t *)(data) == fuzz_tag)
+            if (data[0] == (fuzz_tag & 0xFF) && AV_RN64(data) == fuzz_tag)
                 break;
             data++;
         }
                 break;
             data++;
         }
@@ -186,6 +187,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
             if (ret <= 0 || ret > avpkt.size)
                break;
 
             if (ret <= 0 || ret > avpkt.size)
                break;
+            if (ctx->codec_type != AVMEDIA_TYPE_AUDIO)
+                ret = avpkt.size;
             avpkt.data += ret;
             avpkt.size -= ret;
         }
             avpkt.data += ret;
             avpkt.size -= ret;
         }