Bug fix of wrong mp4, m4a duration
[platform/upstream/ffmpeg.git] / tools / target_dem_fuzzer.c
index 3c03c8d..32767a0 100644 (file)
@@ -34,6 +34,13 @@ typedef struct IOContext {
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
 
+int64_t interrupt_counter;
+static int interrupt_cb(void *ctx)
+{
+    interrupt_counter --;
+    return interrupt_counter < 0;
+}
+
 static void error(const char *err)
 {
     fprintf(stderr, "%s", err);
@@ -160,8 +167,15 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                 *strchr(extension, ',') = 0;
             av_strlcatf(filename, sizeof(filename), ".%s", extension);
         }
+
+        interrupt_counter = bytestream2_get_le32(&gbc);
+        avfmt->interrupt_callback.callback = interrupt_cb;
     }
 
+    // HLS uses a loop with sleep, we thus must breakout or we timeout
+    if (fmt && !strcmp(fmt->name, "hls"))
+        interrupt_counter &= 31;
+
     if (!io_buffer_size || size / io_buffer_size > maxblocks)
         io_buffer_size = size;