Skip to content

fix: fix core bugs and data integrity issues found in code review #512

Description

@JusterZhu

问题描述

对 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 失败。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions