Fluidsynth / 源码审计2026 · 10 · 25 新加坡时间
代码质量 · 覆盖率 · 可复现问题

把没被测试照到的地方,逐个跑一遍。

我从高圈复杂度、低覆盖率的音频与格式解析路径开始,构造输入重现问题,再给每个问题补上回归用例。本页记录截至 2026-10-25 07:13 新加坡时间的审计结果。

38确认且可复现的问题
67 / 67完整常规测试通过
65 / 65合格的 ASan / UBSan / LSan 测试通过
60.7%源码行覆盖率;分支 44.6%,函数 66.5%

直接筛问题

按关键词、输入类型、问题种类和严重程度缩小列表

已复现的缺陷

问题清单

36 项

没有找到符合条件的问题。试试清空筛选或换一个关键词。
怎么审计

先找盲区,再证实问题。

圈复杂度用来找分支多的代码;覆盖率用来找现有测试没走到的分支。两者只是线索,每条问题都用单独输入重现后才列入清单。

  • 对 upstream/master c7ba7b49 做审计;与 24 个未合并的 fix 分支比对,排除已在那些分支处理的问题。
  • 用 Lizard 计算复杂度、gcovr 生成覆盖率;源码覆盖为 60.7% 行、44.6% 分支、66.5% 函数。高复杂、低覆盖函数优先检查。
  • 用 ASan、UBSan、LSan 做定点重现;libFuzzer 跑 MIDI、DLS、SF2 解析器,累计分别执行 428,395、471,995、195,433 次。另以有效 MTS、GS、XG 种子测试 SysEx 入口 181 秒,产生 17,525,710 个字节输入(每个输入各跑普通与试运行两条路径),没有发现崩溃。最近一轮解析器 fuzz 分别执行 91,203、131,129、65,361 次,没有发现崩溃。用 Mull 做源码级变异测试。
  • 测试汇总:完整常规测试 67/67;覆盖率构建 63/63;ASan / UBSan / LSan 排除两个已有分支修复的泄漏用例后 65/65。
  • Mull 变异测试按源码文件筛选,得分反映本次选定回归测试能杀死的变异:MIDI parser 58%,MIDI router 87%(13/106 个变异存活),DLS parser 75%,synth 31%,voice 55%(test_sfont_keynum_bounds:50/90),sequencer 50%(4/8 个存活,均为未覆盖的清理路径空值判断)。幸存变异仍需后续测试补强。