| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix/double free Signed-off-by: Alang <gaoyulang@huawei.com> Change-Id: I8927a620a00b7d9c9cdaffcee0039a907f8428a4 | 8 天前 | |
perf(build): enable size_optimize_config on 130 SO targets Add a new services/common:size_optimize_config (same flags as optimize_config minus the explicit -flto=full, so the toolchain's global ThinLTO mode is preserved) and apply it to the 130 ohos_shared_library targets that previously shipped without any optimization config, so unreferenced functions/data are dropped at link time and ROM shrinks without overriding the global LTO policy. -Wl,--gc-sections is an ELF-only linker flag: Apple ld rejects it, so both optimize_config and size_optimize_config now add it only when current_os != "mac", keeping the darwin SDK host build (which links dylibs with -dead_strip) working. Co-Authored-By: Agent Signed-off-by: RuiChen_01 <chenrui193@huawei.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: claude (glm-5.3) <ai@local> | 18 天前 | |
!20157 merge snapshot_dfx into master 提供快照dfx Created-by: pptaozz Commit-by: zhangatao Merged-by: openharmony_ci Description: **IssueNo**: https://gitcode.com/openharmony/ability_ability_runtime/issues/15933 **Description**: **稳定性自检:** | 自检项 | 自检结果 | | ------------------------------------------------------------ | -------- | | 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | | | 成员变量进行赋值或创建需要排查并发 | | | 谨慎在lambda表达式中使用引用捕获 | | | 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | | | map\vector\list\set等stl模板类使用时需要排查并发 | | | 谨慎考虑加锁范围 | | | 在IPC通信中谨慎使用同步通信方式 | | | 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | | | 禁止将外部传入的裸指针在内部直接构造智能指针 | | | 禁止多个独立创建的智能指针管理同一地址 | | | 禁止在析构函数中抛异步任务 | | | 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | | | 禁止在对外接口中未经判空直接使用外部传入的指针 | | | 禁止接口返回局部变量引用 | | | 禁止在信号函数中加锁 | | | 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | | | 禁止将同一个cpp编译在不同的so中 | | **安全编码自检:** | 自检项 | 自检结果 | | -------------------------------------------------------------- | -------- | | 裸指针避免通过隐式转换构造为sptr | | | json对象在取值之前必须先判断类型,避免类型不匹配 | | | 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | | | 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | | | 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | | | 指针变量、表示资源描述符的变量、bool变量必须赋初值 | | | readParcelable获取的对象使用前需要判空 | | | 分配和释放内存的函数需要成对出现 | | | 申请内存后异常退出前需要及时进行内存释放 | | | 内存申请前必须对内存大小进行合法性校验 | | | 内存分配后必须判断是否成功 | | | 禁止使用realloc、alloca函数 | | | 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | | | 禁止打印内存地址 | | | 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | | | 禁止对有符号整数进行位操作符运算 | | | 禁止对指针进行逻辑或位运算 | | | 循环次数如果收外部数据控制,需要检验其合法性 | | | 禁止使用内存操作类危险函数,需要使用安全函数 | | | 谨慎使用不可重入函数 | | | 必须检查安全函数的返回值,并进行正确处理 | | | 禁止仅通过TokenType类型判断绕过权限校验 | | **TDD Result**: **XTS Result**: ### 是否已执行L0用例 - [ ] 已验证 - [ ] 不涉及。如不涉及,请写明理由 ### AI检视评分(使用本地代码检视skills扫描): See merge request: openharmony/ability_ability_runtime!20157 | 10 天前 | |
!20064 merge fix_quality into master context质量加固 Created-by: ProfaneAria Commit-by: 任国军 Merged-by: openharmony_ci Description: **IssueNo**: **Description**: **稳定性自检:** | 自检项 | 自检结果 | | ------------------------------------------------------------ | -------- | | 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | | | 成员变量进行赋值或创建需要排查并发 | | | 谨慎在lambda表达式中使用引用捕获 | | | 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | | | map\vector\list\set等stl模板类使用时需要排查并发 | | | 谨慎考虑加锁范围 | | | 在IPC通信中谨慎使用同步通信方式 | | | 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | | | 禁止将外部传入的裸指针在内部直接构造智能指针 | | | 禁止多个独立创建的智能指针管理同一地址 | | | 禁止在析构函数中抛异步任务 | | | 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | | | 禁止在对外接口中未经判空直接使用外部传入的指针 | | | 禁止接口返回局部变量引用 | | | 禁止在信号函数中加锁 | | | 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | | | 禁止将同一个cpp编译在不同的so中 | | **安全编码自检:** | 自检项 | 自检结果 | | -------------------------------------------------------------- | -------- | | 裸指针避免通过隐式转换构造为sptr | | | json对象在取值之前必须先判断类型,避免类型不匹配 | | | 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | | | 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | | | 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | | | 指针变量、表示资源描述符的变量、bool变量必须赋初值 | | | readParcelable获取的对象使用前需要判空 | | | 分配和释放内存的函数需要成对出现 | | | 申请内存后异常退出前需要及时进行内存释放 | | | 内存申请前必须对内存大小进行合法性校验 | | | 内存分配后必须判断是否成功 | | | 禁止使用realloc、alloca函数 | | | 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | | | 禁止打印内存地址 | | | 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | | | 禁止对有符号整数进行位操作符运算 | | | 禁止对指针进行逻辑或位运算 | | | 循环次数如果收外部数据控制,需要检验其合法性 | | | 禁止使用内存操作类危险函数,需要使用安全函数 | | | 谨慎使用不可重入函数 | | | 必须检查安全函数的返回值,并进行正确处理 | | | 禁止仅通过TokenType类型判断绕过权限校验 | | **TDD Result**: **XTS Result**: ### 是否已执行L0用例 - [ ] 已验证 - [ ] 不涉及。如不涉及,请写明理由 ### AI检视评分(使用本地代码检视skills扫描): # 代码检视报告 — commit 858a2ebb "context质量加固"(Round 1 / 最新提交) > 统一报告由 codecheck 工作台生成,**用于门禁管控**。所有 codecheck 报告必须遵循本模板:章节顺序、字段名、报告元数据块、评分与门禁规则均为**固定格式**,跨报告保持一致,便于门禁脚本解析与历史对比。 --- ## 报告元数据 > **门禁脚本只读取本 YAML 块**。字段名与取值域为固定合约,禁止改名、增删或自定义取值。 <!-- codecheck-report-metadata:start --> yaml codecheck_report: schema_version: "1.0" scope: "commit-011e8ab4-context质量加固" round: 1 commit_id: "011e8ab468c7aa803709a2929c2325315789a3e6" change_id: "N/A" report_id: "011e8ab4-R1" date: "2026-09-01" gate_decision: "approve" risk_level: "low" score: 93 dimensions_required: ["security-scanner", "logic-scanner"] dimensions_executed: ["security-scanner", "logic-scanner"] findings_total: 2 findings_by_severity: {P0: 0, P1: 0, P2: 1, P3: 1} gate_blockers: [] must_fix: [] followups: ["CC-01", "CC-02"] <!-- codecheck-report-metadata:end --> --- ## 1. 门禁结论 | 项目 | 结论 | |---|---| | 决策 | **approve** | | 风险等级 | 🟢 low | | 评分 | **93/100** | | 阻塞项 | 无 | | 必须修复(P0/P1) | 0 项 | | 建议跟进(P2/P3) | 2 项 | **一句话结论**:本提交为正向质量加固(修复 NAPI 内存泄漏、错误码、空指针防护、服务停止清理),仅发现 1 个 P2(Stop() 不完整)和 1 个 P3(重排后 wrap 失败路径泄漏更确定),无 P0/P1,可上库。 > **api-scanner 维度**:N/A。本提交未修改 .d.ts/.h 公共 API 定义,仅修改 NAPI 绑定实现和 JS 内部逻辑,无公共 API 签名变更。 --- ## 3. 必须立即处理(P0/P1) **无。** --- ## 4. 建议本轮或下一补档处理(P2/P3) | ID | 优先级 | 问题 | 建议行动 | 排期 | |---|---|---|---|---| | CC-01 | P2 | Stop() 清空 applyTasks_ 但未停止 eventHandler_ 已投递任务,未设 stopped 标志阻止并发 ApplyQuickFix 新增任务 | 增加 std::atomic<bool> stopped_ 标志;ApplyQuickFix 入口检查;Stop 中调用 eventHandler_->RemoveAllEvents() | 下个迭代 | | CC-02 | P3 | 4 个重排函数中 napi_wrap 失败时 workContext 确定性泄漏(重排后 wrap 先于 coerce,失败时无人引用) | 在 napi_wrap 失败路径增加 delete workContext 或改用 unique_ptr 管理 | 下一补档 | --- ## 5. 分维度速览 | 维度 | 结果 | 关键说明 | |---|---|---| | security-scanner | 通过 | CC-01 竞态(P2);CC-02 wrap 失败泄漏(P3);无崩溃/UAF/OOM/权限风险;本提交正向修复 2 处 release 泄漏 + 1 处错误码 | | logic-scanner | 通过 | CC-01 状态机不完整(P2);CC-02 错误路径资源管理(P3);错误码修正正确;空指针防护正确 | | api-scanner | N/A | 未修改公共 API 定义(.d.ts/.h),仅修改 NAPI 绑定实现和 JS 内部逻辑 | --- ## 6. 关键发现详情 ### [CC-01] Stop() 不完整:未取消已投递事件任务,未阻止并发新增任务 (P2, scanner=security+logic) - **位置**:services/quickfixmgr/src/quick_fix_manager_service.cpp:62-70;services/quickfixmgr/src/quick_fix_manager_service_ability.cpp:59-66 - **触发路径**:系统关机 OnStop()→service_->Stop()→applyTasks_.clear()(taskMutex_ 保护)→service_=nullptr。窗口内:并发 ApplyQuickFix IPC→AddApplyTask(加锁)→applyTask->Run()→PostTask 到 eventHandler_。Stop() 未设停止标志、未调用 RemoveAllEvents、未停止 eventRunner_。 - **影响**:服务"已停止"但 eventHandler_ 仍活跃,运行中任务继续执行 IPC(bundleQfMgr/appMgr)可能超时或状态不一致;Stop() 后新任务可被加入,Stop 清理语义被破坏。无 UAF(wptr+静态单例 instance_),无数据竞争(全访问点加锁)。 - **证据**:quick_fix_manager_service.cpp:62-70 Stop() 仅 applyTasks_.clear(),无 eventHandler_ 操作;:105-107 ApplyQuickFix 不检查服务状态直接 AddApplyTask+Run;AddApplyTask:213、RemoveApplyTask:219、CheckTaskRunningState:231 均使用 taskMutex_。 - **建议**:1) 增加 std::atomic<bool> stopped_ 标志,Stop() 时置 true;2) ApplyQuickFix/RevokeQuickFix 入口检查 stopped_ 拒绝新任务;3) Stop() 中调用 eventHandler_->RemoveAllEvents() 取消已投递任务。 ### [CC-02] 重排后 napi_wrap 失败路径 workContext 确定性泄漏 (P3, scanner=security+logic) - **位置**:frameworks/js/napi/app/sendable_context_manager/js_sendable_context_manager.cpp:187-194(及 246-253, 305-312, 364-371 同构) - **触发路径**:重排后 napi_wrap 先于 napi_coerce 调用→napi_wrap 失败(低内存/引擎异常)→return nullptr→workContext(raw new)无人引用、无 finalizer 注册→确定性泄漏。旧代码中 napi_wrap 在 coerce 之后失败时,workContext 已被 coerce 关联到 binding,可能由 detached finalizer 清理(不确定);重排后 napi_wrap 最先执行,失败时 workContext 无任何引用。 - **影响**:napi_wrap 失败时泄漏单个 std::weak_ptr<Context> 对象。触发条件罕见(需 OOM 或 NAPI 引擎异常),且仅在初始化路径一次性触发,泄漏量小。无崩溃。 - **证据**::187 auto workContext = new (std::nothrow) std::weak_ptr<Context>(contextPtr);(raw new,非 unique_ptr);:188 napi_wrap 先调用;:192 失败路径 return nullptr 无 delete workContext。对比本提交修复的 CreateSendableContextObject(:141)使用 unique_ptr + .get() 模式,失败时 unique_ptr 自动释放。 - **建议**:将 auto workContext = new ... 改为 std::unique_ptr<...> workContext(new ...),传入 .get(),成功后 .release()——与本提交已修复的 CreateSendableContextObject 模式一致。 --- ## 正向修复确认(本提交引入的改善) | 修复项 | 说明 | |--------|------| | CreateSendableContextObject / CreateJsSendableContextManager release() 模式 | **修复泄漏**:.release() 前置→.get() + 成功后 .release(),消除 wrap 失败时的裸指针泄漏 | | 4 函数 napi_wrap/napi_coerce 顺序重排 | **修复 coerce 失败路径泄漏**:旧顺序 coerce→wrap 在 coerce 失败后 delete workContext 但 wrap 失败无清理;新顺序 wrap→coerce 在 coerce 失败时由 wrap finalizer 自动清理 | | js_runtime_lite.cpp 错误码 | **修复错误路径返回成功**:Initialize 失败时返回 napi_generic_failure 而非 napi_ok,避免调用方使用无效 env | | ability_stage.js null 检查 | **正向加固**:防御 want 为 null 时的 TypeError | | ability_stage_context.js null 检查 | **正向加固**:防御 obj/config 为 null 时的 TypeError | | QuickFixManagerService::Stop() | **新增**:服务停止时清理 pending apply tasks | | 测试加固 | TearDown 增加 ResetMockQuickFixManagerServiceState();namespace 修正 | See merge request: openharmony/ability_ability_runtime!20064 | 7 天前 | |
!20345 merge master into master Description:add random telemetry Created-by: EurusHomles-zH Commit-by: EurusHomles-zH Merged-by: openharmony_ci Description: https://gitcode.com/openharmony/ability_ability_runtime/issues/16096 See merge request: openharmony/ability_ability_runtime!20345 | 6 天前 | |
perf(build): enable size_optimize_config on 130 SO targets Add a new services/common:size_optimize_config (same flags as optimize_config minus the explicit -flto=full, so the toolchain's global ThinLTO mode is preserved) and apply it to the 130 ohos_shared_library targets that previously shipped without any optimization config, so unreferenced functions/data are dropped at link time and ROM shrinks without overriding the global LTO policy. -Wl,--gc-sections is an ELF-only linker flag: Apple ld rejects it, so both optimize_config and size_optimize_config now add it only when current_os != "mac", keeping the darwin SDK host build (which links dylibs with -dead_strip) working. Co-Authored-By: Agent Signed-off-by: RuiChen_01 <chenrui193@huawei.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: claude (glm-5.3) <ai@local> | 18 天前 |