[FFmpeg-trac] #11395(avfilter:new): null pointer deref similar to https://trac.ffmpeg.org/ticket/11392 when using the aeval filter in filtergraphs

FFmpeg trac at avcodec.org
Fri Jan 3 18:06:20 EET 2025


#11395: null pointer deref similar to https://trac.ffmpeg.org/ticket/11392 when
using the aeval filter in filtergraphs
-------------------------------------+-------------------------------------
             Reporter:  somehacker   |                     Type:  defect
               Status:  new          |                 Priority:  important
            Component:  avfilter     |                  Version:  git-
             Keywords:  expression   |  master
  filters                            |               Blocked By:
             Blocking:               |  Reproduced by developer:  1
Analyzed by developer:  1            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 Hi! I found another potential null pointer deref.

 How to reproduce:
 {{{
 % ./ffmpeg -i input -vf "aeval=:1" output
 ffmpeg version git-2025-01-01-df09465 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 13 (Ubuntu 13.3.0-6ubuntu2~24.04)
   configuration: --disable-x86asm --enable-debug=3 --disable-optimizations
   libavutil      59. 53.100 / 59. 53.100
   libavcodec     61. 28.100 / 61. 28.100
   libavformat    61.  9.102 / 61.  9.102
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.101 / 10.  6.101
   libswscale      8. 13.100 /  8. 13.100
   libswresample   5.  4.100 /  5.  4.100

 built on:

 No LSB modules are available.
 Distributor ID: Ubuntu
 Description:    Ubuntu 24.04.1 LTS
 Release:        24.04
 Codename:       noble
 }}}

 Here is the ASAN output from the debug binary (ffmpeg_g). The contents of
 the input file are not important since this bug occurs with any input
 file. I found this bug via fuzzing and once again if you are to read you
 can read about it here:
 https://personnumber3377.github.io/projects/fuzzing_ffmpeg_avfilter_graph_parse_ptr.html

 {{{
 ffmpeg version git-2025-01-01-df09465 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 13 (Ubuntu 13.3.0-6ubuntu2~24.04)
   configuration: --disable-x86asm --enable-debug=3 --disable-optimizations
   libavutil      59. 53.100 / 59. 53.100
   libavcodec     61. 28.100 / 61. 28.100
   libavformat    61.  9.102 / 61.  9.102
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.101 / 10.  6.101
   libswscale      8. 13.100 /  8. 13.100
   libswresample   5.  4.100 /  5.  4.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: mp42mp41isomavc1
     creation_time   : 2015-08-07T09:13:02.000000Z
   Duration: 00:00:30.53, start: 0.000000, bitrate: 411 kb/s
   Stream #0:0[0x1](und): Video: h264 (Constrained Baseline) (avc1 /
 0x31637661), yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], 301 kb/s,
 30 fps, 30 tbr, 30 tbn (default)
     Metadata:
       creation_time   : 2015-08-07T09:13:02.000000Z
       handler_name    : L-SMASH Video Handler
       vendor_id       : [0][0][0][0]
       encoder         : AVC Coding
   Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 112 kb/s (default)
     Metadata:
       creation_time   : 2015-08-07T09:13:02.000000Z
       handler_name    : L-SMASH Audio Handler
       vendor_id       : [0][0][0][0]
 libavutil/eval.c:718:25: runtime error: null pointer passed as argument 1,
 which is declared to never be null
 AddressSanitizer:DEADLYSIGNAL
 =================================================================
 ==3568872==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000
 (pc 0x7f4b2f59875d bp 0x7ffebc34a090 sp 0x7ffebc349818 T0)
 ==3568872==The signal is caused by a READ memory access.
 ==3568872==Hint: address points to the zero page.
     #0 0x7f4b2f59875d in __strlen_avx2 ../sysdeps/x86_64/multiarch/strlen-
 avx2.S:76
     #1 0x7f4b302eb826 in strlen
 ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:389
     #2 0x55fd83dc02f6 in av_expr_parse libavutil/eval.c:718
     #3 0x55fd7d75f6b8 in parse_channel_expressions libavfilter/aeval.c:156
     #4 0x55fd7d75fd76 in init libavfilter/aeval.c:185
     #5 0x55fd7c67e25e in avfilter_init_dict libavfilter/avfilter.c:939
     #6 0x55fd7c751af9 in avfilter_graph_segment_init
 libavfilter/graphparser.c:634
     #7 0x55fd7c7558ce in avfilter_graph_segment_apply
 libavfilter/graphparser.c:905
     #8 0x55fd7c3f65d5 in graph_parse fftools/ffmpeg_filter.c:595
     #9 0x55fd7c4001b6 in fg_create fftools/ffmpeg_filter.c:1104
     #10 0x55fd7c401676 in fg_create_simple fftools/ffmpeg_filter.c:1203
     #11 0x55fd7c441846 in ost_bind_filter fftools/ffmpeg_mux_init.c:999
     #12 0x55fd7c44c333 in ost_add fftools/ffmpeg_mux_init.c:1536
     #13 0x55fd7c44e7eb in map_auto_video fftools/ffmpeg_mux_init.c:1640
     #14 0x55fd7c454848 in create_streams fftools/ffmpeg_mux_init.c:1969
     #15 0x55fd7c46bcde in of_open fftools/ffmpeg_mux_init.c:3335
     #16 0x55fd7c47be1b in open_files fftools/ffmpeg_opt.c:1363
     #17 0x55fd7c47c626 in ffmpeg_parse_options fftools/ffmpeg_opt.c:1419
     #18 0x55fd7c4db981 in main fftools/ffmpeg.c:974
     #19 0x7f4b2f4371c9 in __libc_start_call_main
 ../sysdeps/nptl/libc_start_call_main.h:58
     #20 0x7f4b2f43728a in __libc_start_main_impl ../csu/libc-start.c:360
     #21 0x55fd7c397ba4 in _start
 (/home/oof/ffmpegfuzzerthing/myfork/backupshit/new/FFmpeg/ffmpeg_g+0xbef5ba4)
 (BuildId: f16d7ec11e94c65e71ebe53cf79988601733f849)

 AddressSanitizer can not provide additional info.
 SUMMARY: AddressSanitizer: SEGV ../sysdeps/x86_64/multiarch/strlen-
 avx2.S:76 in __strlen_avx2
 ==3568872==ABORTING
 }}}

 Thanks in advance!
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11395>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list