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

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

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

33确认且可复现的问题
61 / 61完整常规测试通过
59 / 59合格的 ASan / UBSan 测试通过
58.1%源码行覆盖率;分支 42.5%,函数 63.5%

直接筛问题

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

已复现的缺陷

问题清单

33 项

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

先找盲区,再证实问题。

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

  • 对 upstream/master c7ba7b49 做审计;与 24 个未合并的 fix 分支比对,排除已在那些分支处理的问题。
  • 用 Lizard 计算复杂度、gcovr 生成覆盖率;源码覆盖为 58.1% 行、42.5% 分支、63.5% 函数。高复杂、低覆盖函数优先检查。
  • 用 ASan、UBSan、LSan 做定点重现;libFuzzer 跑 MIDI、DLS、SF2 解析器,累计分别执行 130,393、176,420、46,361 次。复查期间追加了 MIDI 108,872 次、DLS 88,214 次和 SF2 20,605 次,没有发现新崩溃;用 Mull 做源码级变异测试。
  • 测试汇总:完整常规测试 62/62;覆盖率构建 58/58;ASan / UBSan / LSan 排除两个已有分支修复的泄漏用例后 60/60。
  • Mull 变异测试按源码文件筛选,得分反映本次选定回归测试能杀死的变异:MIDI parser 47%,MIDI router 87%(13/106 个变异存活),DLS parser 65%,synth 31%,voice 55%(test_sfont_keynum_bounds:50/90)。幸存变异仍需后续测试补强。