Opened 19 months ago
Closed 19 months ago
#11395 closed defect (fixed)
null pointer deref similar to https://trac.ffmpeg.org/ticket/11392 when using the aeval filter in filtergraphs
| Reported by: | somehacker | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avfilter |
| Version: | git-master | Keywords: | |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | yes |
Description
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!
Change History (1)
comment:1 by , 19 months ago
| Keywords: | expression filters removed |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.



Fixed in e262411f329d63bcd36fbf4ac666629530ffec90