Skip to content

revert: 撤销 v2.1.0 原生插件 deinit 跳过与压缩包解压限额(保留市场 ID 校验) - #364

Merged
OrientCOMPASS merged 2 commits into
MicYou-Dev:masterfrom
OrientCOMPASS:revert-v2.1.0-plugin-fixes
Oct 8, 2026
Merged

OrientCOMPASS merged 2 commits into
MicYou-Dev:masterfrom
OrientCOMPASS:revert-v2.1.0-plugin-fixes

Conversation

@OrientCOMPASS

Copy link
Copy Markdown
Contributor

撤销 v2.1.0 中的两处改动:

v2.1.0 提交 本 PR 的处理
1e5e1b1 fix: skip native plugin deinit after a failed init(原生插件初始化失败后跳过 deinit) 完整撤销
164785e fix: bound plugin archive extraction and validate market ids(限制插件压缩包解压大小与条目数,校验市场插件 ID) 部分撤销:移除解压大小与条目数限制;install_from_url 中的市场插件 ID 校验原样保留

共 2 个撤销提交,仅涉及 micyou-plugin/src/native.rs 与 micyou-core/src/plugins/install.rs 两个文件。

理由

1. init 失败后跳过 deinit 会造成“资源拿了不放回”的泄漏

插件在 micyou_plugin_init 失败返回时,可能已经获取了资源(分配内存、打开句柄、创建工作线程等)。宿主此时跳过 micyou_plugin_deinit、直接卸载动态库,插件就在代码消失前失去了归还这些资源的唯一机会,泄漏发生在宿主进程内。docs/plugins/api-reference.md 对 deinit 的约定也是“清理(宿主卸载库前调用一次)”,并无 init 失败的例外。因此应保持修改前的实现:卸载前无条件调用 deinit。

2. 解压限额误伤真实插件;zip bomb 不在本项目防御范围内

  • 已有插件的压缩包解压后超出 512 MB / 10000 条目的硬编码限额,导致无法安装;限额没有配置手段,实际效果只是拦掉了合法的大插件。
  • native 插件本身就是以用户权限执行的原生代码:用户选择安装某个插件,就对该插件的行为负全部责任。恶意插件无论有没有解压限额都能造成任意破坏,zip bomb 防护不在本项目的威胁模型之内。
  • 164785e 中的市场插件 ID 校验(防止市场返回的 ID 污染临时文件路径)有实际价值,本 PR 予以保留,不在撤销之列。

影响范围与验证

  • native.rs 逐字节恢复到 1e5e1b1 之前的状态;install.rs 恢复到 164785e 之前的状态、仅额外保留 ID 校验块——涉及的代码均为历史上存在于 master 并经过 CI 的版本。
  • 仓库内没有依赖这两处行为的测试,撤销不影响现有测试。

init 失败时插件可能已获取资源(分配内存、打开句柄、创建工作线程等),
跳过 deinit 会让插件在动态库被卸载前失去唯一的清理机会,造成
“资源拿了不放回”的泄漏;且与文档中 deinit “宿主卸载库前调用一次”
的契约不符。恢复 1e5e1b1 之前的实现。

This reverts commit 1e5e1b1.
已有插件的压缩包解压后超出 512MB/10000 条目的硬编码限额导致无法安装,
且限额无配置手段。项目定位是用户对自行安装的插件负全部责任,
zip bomb 不在防御范围内。保留 164785e 中 install_from_url 的市场插件
ID 校验(防止市场返回的 ID 污染临时文件路径)。

Partially reverts commit 164785e.
@micyou-automation micyou-automation Bot added reviewing 正在复核 size/m 30-99 行 labels Oct 8, 2026
@OrientCOMPASS
OrientCOMPASS merged commit 745dbd1 into MicYou-Dev:master Oct 8, 2026
4 checks passed
@micyou-automation micyou-automation Bot added done 完成 and removed reviewing 正在复核 labels Oct 8, 2026
@OrientCOMPASS
OrientCOMPASS deleted the revert-v2.1.0-plugin-fixes branch October 9, 2026 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

done 完成 size/m 30-99 行

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant