|
@@ -96,7 +96,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|
|
const uint64_t fuzz_tag = FUZZ_TAG;
|
|
|
uint32_t it = 0;
|
|
|
AVFormatContext *avfmt = avformat_alloc_context();
|
|
|
- AVPacket pkt;
|
|
|
+ AVPacket *pkt;
|
|
|
char filename[1025] = {0};
|
|
|
AVIOContext *fuzzed_pb = NULL;
|
|
|
uint8_t *io_buffer;
|
|
@@ -165,6 +165,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|
|
if (!io_buffer_size || size / io_buffer_size > maxblocks)
|
|
|
io_buffer_size = size;
|
|
|
|
|
|
+ pkt = av_packet_alloc();
|
|
|
+ if (!pkt)
|
|
|
+ error("Failed to allocate pkt");
|
|
|
+
|
|
|
io_buffer = av_malloc(io_buffer_size);
|
|
|
if (!io_buffer)
|
|
|
error("Failed to allocate io_buffer");
|
|
@@ -190,17 +194,16 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|
|
|
|
|
ret = avformat_find_stream_info(avfmt, NULL);
|
|
|
|
|
|
- av_init_packet(&pkt);
|
|
|
-
|
|
|
//TODO, test seeking
|
|
|
|
|
|
for(it = 0; it < maxiteration; it++) {
|
|
|
- ret = av_read_frame(avfmt, &pkt);
|
|
|
+ ret = av_read_frame(avfmt, pkt);
|
|
|
if (ret < 0)
|
|
|
break;
|
|
|
- av_packet_unref(&pkt);
|
|
|
+ av_packet_unref(pkt);
|
|
|
}
|
|
|
|
|
|
+ av_packet_free(&pkt);
|
|
|
av_freep(&fuzzed_pb->buffer);
|
|
|
avio_context_free(&fuzzed_pb);
|
|
|
avformat_close_input(&avfmt);
|