#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".

Reply via email to