#11679: Segmentation fault when processing malformed AVI files with CFHD codec due to null function pointer call in buffer management. -------------------------------+--------------------------------------- Reporter: xdc | Type: defect Status: new | Priority: normal Component: tools | Version: unspecified Keywords: libav | Blocked By: Blocking: | Reproduced by developer: 0 Analyzed by developer: 0 | -------------------------------+--------------------------------------- Summary of the bug: ## How to reproduce: ``` % avconv -i /workspace/POC/POC_libav_avconv_segfault_avi_cfhd -f null - avconv version 13_dev0, Copyright (c) 2000-2018 the Libav developers built on Jul 19 2025 14:57:50 with Ubuntu clang version 16.0.6 (++20231112100510+7cbf1a259152-1~exp1~20231112100554.106) configuration: --cc=/Fuzzer/OPA++/afl-clang-lto --extra-cflags= --prefix=/workspace/benchmark/program/libav-c464278-Apr16-2019/install --disable-shared --enable-static --disable-x86asm --disable-inline-asm libavutil 56. 8. 0 / 56. 8. 0 libavcodec 58. 12. 1 / 58. 12. 1 libavformat 58. 2. 0 / 58. 2. 0 libavdevice 57. 0. 2 / 57. 0. 2 libavfilter 7. 1. 0 / 7. 1. 0 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 0. 1 / 5. 0. 1 Input #0, avi, from '/workspace/POC/POC_libav_avconv_segfault_avi_cfhd': Metadata: encoder : Lavf57.7.1 Duration: 00:00:00.33, start: 0.000000, bitrate: 13103 kb/s Stream #0:0: Video: cfhd [CFHD / 0x44484643] yuv422p10le, 720x480 29.97 fps, 29.97 tbn Stream mapping: Stream #0:0 -> #0:0 (cfhd (native) -> wrapped_avframe (native)) Press ctrl-c to stop encoding Output #0, null, to 'pipe:': Metadata: encoder : Lavf58.2.0 Stream #0:0: Video: wrapped_avframe yuv422p10le, 720x480, q=2-31, 200 kb/s 29.97 tbn Metadata: encoder : Lavc58.12.1 wrapped_avframe Segmentation fault (core dumped) ```
## GDB Analysis: ``` Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () #0 0x0000000000000000 in ?? () #1 0x00005555568275bf in av_buffer_unref (buf=0x5555573257c8) at libavutil/buffer.c:117 #2 av_frame_unref (frame=0x5555573256a0) at libavutil/frame.c:302 #3 0x000055555675313e in av_frame_free (frame=<optimized out>) at libavutil/frame.c:86 #4 wrapped_avframe_release_buffer (unused=<optimized out>, data=0x0) at libavcodec/wrapped_avframe.c:39 #5 0x00005555558aa68d in av_buffer_unref (buf=0x7fffffffd160) at libavutil/buffer.c:117 #6 av_packet_unref (pkt=0x7fffffffd160) at libavcodec/avpacket.c:351 #7 av_interleaved_write_frame (s=0x555557168480, pkt=0x0) at libavformat/mux.c:686 #8 write_packet (of=<optimized out>, pkt=<optimized out>, ost=<optimized out>) at avtools/avconv.c:358 #9 0x00005555558a6b8d in do_video_out (of=0x55555716d880, ost=0x555557168de0, in_picture=<optimized out>, frame_size=<optimized out>) at avtools/avconv.c:607 #10 poll_filter (ost=0x555557168de0) at avtools/avconv.c:729 #11 poll_filters () at avtools/avconv.c:803 #12 0x0000555555898d16 in transcode () at avtools/avconv.c:2806 #13 main (argc=<optimized out>, argv=<optimized out>) at avtools/avconv.c:2975 ``` ## Root Cause: The crash occurs when a buffer's release function pointer is NULL (0x0000000000000000) but still gets called during cleanup. This happens in the wrapped_avframe codec when processing malformed AVI files with CFHD video codec. The buffer management system fails to properly validate function pointers before calling them. ## POC File: The malformed AVI file is available at: `[/workspace/POC/POC_libav_avconv_segfault_avi_cfhd][https://drive.google.com/file/d/1OwDNHuTbZFNTDX9afmvez_old3oRC7dM/view?usp=sharing]` -- Ticket URL: <https://trac.ffmpeg.org/ticket/11679> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker
_______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org https://ffmpeg.org/mailman/listinfo/ffmpeg-trac To unsubscribe, visit link above, or email ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".