问题描述
对 GeneralUpdate 全内置机制进行系统性代码审查后,修复了 二~四类 共 14 个 Bug。修复覆盖 Core、Differential、Bowl、Drivelution、Extension 五个项目。
改动清单
二、严重 Bug / 数据损坏 (7)
| # |
问题 |
文件 |
| 2.1 |
Brotli 格式补丁检测缺失,Brotli 压缩的补丁被误判为 BZip2 |
BsdiffDiffer.cs |
| 2.2 |
ReadFileWithBudget 返回未修剪缓冲区,尾部零填充导致错误补丁 |
StreamingHdiffDiffer.cs |
| 2.3 |
BsdiffDiffer.Search 索引到哨兵值 -1,导致 IndexOutOfRange |
BsdiffDiffer.cs |
| 2.4 |
Bowl EnsureDirectory 每次删除并重建故障目录,销毁已有崩溃诊断 |
WindowsBowlStrategy.cs, LinuxBowlStrategy.cs |
| 2.5 |
FileNode.Equals 对非 FileNode 抛异常,违反 IEquatable 约定 |
FileNode.cs |
| 2.6 |
EventManager Dispatch 与 AddListener/RemoveListener 竞争条件 |
EventManager.cs |
| 2.7 |
SemaphoreSlim 未 Dispose,内核句柄泄漏 |
DiffPipeline.cs |
三、高严重性 Bug (4)
| # |
问题 |
文件 |
| 3.2 |
FileTree.Compare 多处潜在 NRE |
FileTree.cs |
| 3.4 |
Version.Parse 未保护非法版本字符串 |
ClientStrategy.cs |
| 3.5 |
GeneralTracer 日志日切线程安全 |
GeneralTracer.cs |
| 3.9 |
ProcessRunner 计时器泄漏 |
ProcessRunner.cs |
四、中等严重问题 (3)
| # |
问题 |
文件 |
| 4.2 |
OssStrategy 硬编码 .exe 后缀,Linux/macOS 不适用 |
OssStrategy.cs |
| 4.7 |
VersionComparer 数值溢出 |
VersionComparer.cs |
| 4.8 |
Extension 安装钩子使用文件路径作为 Id |
GeneralExtensionHost.cs |
测试覆盖强化
BsdiffDifferTests: 新增 6 个边缘用例(单字节/2字节/重复模式/单字节变化)
VersionComparerTests: 新增 3 个大数值溢出测试
FileTreeTests: 新增 6 个 null/不平衡树/匹配树测试
验证
全部 1864 个测试通过(Core 959 + Differential 107 + Bowl 152 + Drivelution 279 + Extension 367),0 失败。
问题描述
对 GeneralUpdate 全内置机制进行系统性代码审查后,修复了 二~四类 共 14 个 Bug。修复覆盖 Core、Differential、Bowl、Drivelution、Extension 五个项目。
改动清单
二、严重 Bug / 数据损坏 (7)
BsdiffDiffer.csReadFileWithBudget返回未修剪缓冲区,尾部零填充导致错误补丁StreamingHdiffDiffer.csBsdiffDiffer.Search索引到哨兵值-1,导致 IndexOutOfRangeBsdiffDiffer.csEnsureDirectory每次删除并重建故障目录,销毁已有崩溃诊断WindowsBowlStrategy.cs,LinuxBowlStrategy.csFileNode.Equals对非 FileNode 抛异常,违反IEquatable约定FileNode.csEventManager.csSemaphoreSlim未 Dispose,内核句柄泄漏DiffPipeline.cs三、高严重性 Bug (4)
FileTree.Compare多处潜在 NREFileTree.csVersion.Parse未保护非法版本字符串ClientStrategy.csGeneralTracer日志日切线程安全GeneralTracer.csProcessRunner计时器泄漏ProcessRunner.cs四、中等严重问题 (3)
OssStrategy硬编码.exe后缀,Linux/macOS 不适用OssStrategy.csVersionComparer数值溢出VersionComparer.csGeneralExtensionHost.cs测试覆盖强化
BsdiffDifferTests: 新增 6 个边缘用例(单字节/2字节/重复模式/单字节变化)VersionComparerTests: 新增 3 个大数值溢出测试FileTreeTests: 新增 6 个 null/不平衡树/匹配树测试验证
全部 1864 个测试通过(Core 959 + Differential 107 + Bowl 152 + Drivelution 279 + Extension 367),0 失败。