| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
优化意图开机性能 Co-Authored-By: Agent Signed-off-by: linjunjie <linjunjie6@huawei.com> AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%] | 1 天前 | |
Message: 乘法溢出优化 Signed-off-by: zhengdongdong12 <zhengchengkai@huawei.com> | 11 天前 | |
!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 | 3 天前 | |
refactor: prelaunch no call request Signed-off-by: yangxuguang-huawei <yangxuguang3@h-partners.com> AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%] Co-authored-by: pi (glm-5.2) <ai@local> Change-Id: Ic48c93dcef13e366ed3da1cd4774289497c00f5a | 2 天前 | |
update Signed-off-by: zph000 <zhaopenghui8@huawei.com> Co-Authored-By: Agent | 1 个月前 | |
!20232 merge dialog_ui into master fix: 意图调试应用bug Created-by: SkyQAQ Commit-by: songkeyuan Merged-by: openharmony_ci Description: **IssueNo**: https://gitcode.com/openharmony/ability_ability_runtime/issues/15999 **Description**: fix: 意图调试应用bug **稳定性自检:** | 自检项 | 自检结果 | | ------------------------------------------------------------ | -------- | | 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | | | 成员变量进行赋值或创建需要排查并发 | | | 谨慎在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扫描): # 代码检视报告 — services/dialog_ui/ams_system_dialog(Round 1 / 提交 a6fa4f5c) > 统一报告由 codecheck 工作台生成,**用于门禁管控**。 --- ## 报告元数据 <!-- codecheck-report-metadata:start --> yaml codecheck_report: schema_version: "1.0" scope: "services/dialog_ui/ams_system_dialog (commit a6fa4f5c fix: 意图调试应用bug)" round: 1 commit_id: "a6fa4f5c294b63c22621a67b83f6ad05dcca8b88" change_id: "a6fa4f5c294b63c22621a67b83f6ad05dcca8b88" report_id: "a6fa4f5c294b63c22621a67b83f6ad05dcca8b88-R1" date: "2026-08-26" gate_decision: "approve" risk_level: "low" score: 90 dimensions_required: ["security-scanner", "logic-scanner"] dimensions_executed: ["security-scanner", "logic-scanner"] findings_total: 5 findings_by_severity: {"P0": 0, "P1": 0, "P2": 0, "P3": 5} gate_blockers: [] must_fix: [] followups: ["LOG-001", "LOG-002", "LOG-003", "LOG-004", "SEC-001"] <!-- codecheck-report-metadata:end --> --- ## 1. 门禁结论 | 项目 | 结论 | | ----------------- | ------------- | | 决策 | **approve** | | 风险等级 | 🟢 low | | 评分 | **90/100** | | 阻塞项 | 无(0 项 P0) | | 必须修复(P0/P1) | 0 项 | | 建议跟进(P2/P3) | 5 项 | **一句话结论**:本提交为意图调试系统对话框应用(services/dialog_ui/ams_system_dialog,纯 ArkTS UI,无 IPC/DB/公共 API 变更)的 bug 修复——EntryAbility 增加深色模式窗口外观适配与 getMainWindow 错误处理,IntentDetailPage 表单必填校验增强(补 ''/NaN 检查并弹出"Missing required fields"告警)。变更整体低风险,未发现 P0/P1 缺陷;5 条 P3 观察项集中在窗口生命周期防御与校验覆盖边界。安全维度经检视无真实攻击面(详见 §5)。 --- ## 2. 扣分原因 > 仅 gate_decision=block 时呈现。本报告为 approve,本节省略。 --- ## 3. 必须立即处理(P0/P1) **无。** 详情见第 6 节。 --- ## 4. 建议本轮或下一补档处理(P2/P3) | ID | 优先级 | 问题 | 建议行动 | 排期 | | ------- | ------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | | LOG-001 | P3 | getMainWindow 回调未对 data 做空值防护,极端下同步抛异常触发全局 restartApp | 在回调内 if (!data) return;,补齐本次"crash 加固" | 下一补档 | | LOG-002 | P3 | mainWindow 未在 onWindowStageDestroy 置空,配置更新会对已销毁窗口重复 applyAppearance | onWindowStageDestroy 中 this.mainWindow = null | 下一补档 | | LOG-003 | P3 | 必填校验不递归 object/array 嵌套字段,嵌套必填子字段全空仍判定通过 | 对 object/array 类型做递归校验或至少提示"需填充子字段" | 下一补档 | | LOG-004 | P3 | Number.isNaN(executeParam[key] as number) 对字符串恒 false,as number 不转换 | 改为 typeof v === 'number' && Number.isNaN(v) 或统一类型校验 | 下一补档 | | SEC-001 | P3 | 校验失败日志模板字符串直接插值 ${key}(无 hilog 格式符/隐私标记),key 源自意图元数据 | 改用 %{public}s 格式符参数化 | 下一补档 | --- ## 5. 分维度速览 | 维度 | 结果 | 关键说明 | | ---------------- | ---------------- | ------------------------------------------------------------ | | security-scanner | ✅ 执行(低风险) | 纯 UI 调试工具,无 IPC/权限/敏感数据面;唯一观察项 SEC-001(日志插值)。 | | logic-scanner | ✅ 执行 | 4 条 P3:窗口生命周期防御(LOG-001/002)、必填校验边界(LOG-003/004)。 | | input-scanner | N/A | 变更无外部输入→持久化链路(无 DB/文件/IPC 写入),不适用。 | | api-scanner | N/A | 变更不涉及对外 API(interfaces/kits/、NAPI/ANI/C 绑定),不适用。 | --- ## 6. 关键发现详情 > P0/P1 必出全量卡片;P2/P3 按需精选或全出。 ### [LOG-001] getMainWindow 回调缺少 data 空指针防护(P3, scanner=logic-scanner) - **位置**:services/dialog_ui/ams_system_dialog/feature/src/main/ets/entryability/EntryAbility.ets:112-119 - **触发路径**:windowStage.getMainWindow(cb) 成功分支 → this.mainWindow = data; this.applyAppearance(data)。若框架在异常态回调 (err=undefined, data=null)(违反 AsyncCallback 契约的极端场景),applyAppearance 内 data.setWindowLayoutFullScreen(true)(EntryAbility.ets:132)在对象上同步访问属性 → 抛 TypeError,且该异常位于框架回调内(外层 try 仅包住 getMainWindow 调用本身,不覆盖回调执行)→ 触发全局 errorManager → restartApp() 重启整个调试应用。 - **影响**:极端态下调试应用被意外重启(调试工具,无数据破坏)。当前 AsyncCallback 契约下成功必有 data,属防御性缺口。 - **证据**:EntryAbility.ets:112-120(错误分支仅判 err && err.code !== 0,无 !data 判空);EntryAbility.ets:131-142(applyAppearance 对 data 直接解引用)。 - **建议**:if (err && err.code !== 0 || !data) return; 或在 applyAppearance 入口判空。 ### [LOG-002] mainWindow 未在 onWindowStageDestroy 置空(P3, scanner=logic-scanner) - **位置**:services/dialog_ui/ams_system_dialog/feature/src/main/ets/entryability/EntryAbility.ets:161-163 - **触发路径**:窗口阶段销毁(Ability 后台/退出/折叠等)后收到 onConfigurationUpdate → onConfigurationUpdate(153-159)命中 if (this.mainWindow) → 对已销毁窗口调用 applyAppearance。 - **影响**:同步 setWindowBackgroundColor 已被 try-catch、异步调用均带 .catch,不会崩溃,但产生冗余失败日志与生命周期状态残留;窗口销毁后重建场景下可能沿用过期窗口句柄。 - **证据**:onWindowStageDestroy(161-163)仅打日志、未置空 this.mainWindow;onConfigurationUpdate(156-158)直接复用 this.mainWindow。 - **建议**:onWindowStageDestroy 中 this.mainWindow = null,与 onWindowStageCreate 对称。 ### [LOG-003] 必填校验不递归 object/array 嵌套字段(P3, scanner=logic-scanner) - **位置**:services/dialog_ui/ams_system_dialog/feature/src/main/ets/view/IntentDetailPage.ets:358-366(配合 260-262) - **触发路径**:必填字段为 object/array 类型时,executeParam[key] 为(可能子字段全空的)对象 → 恒不满足 undefined/null/''/NaN 四条件 → 校验通过并 executeLinkIntent 执行。 - 例:必填 person 且其子字段 person.name 为空 → format(this.formData) 产出 executeParam['person'] = { name: '' } → 校验通过。 - **影响**:与本次"Missing required fields"告警目的不符——嵌套必填子字段缺失时既不弹告警也不拦截。前置实现同样未递归,属本次校验增强的覆盖盲区,非本提交引入的回归。 - **证据**:changeProperties(260-262)仅对顶层 propKey 标记 formObj.required;submitForm(358-366)仅查 executeParam[key] 顶层值;format()(format.js:16-32)将点号键展开为嵌套对象。 - **建议**:对 object/array 必填字段递归校验子字段,或在 UI 上对嵌套必填项同样展示"必填"标记并逐层校验。 ### [LOG-004] Number.isNaN 的 as number 断言不转换,对字符串恒 false(P3, scanner=logic-scanner) - **位置**:services/dialog_ui/ams_system_dialog/feature/src/main/ets/view/IntentDetailPage.ets:360 - **触发路径**:Number.isNaN(executeParam[key] as number) —— ArkTS/TS 的 as number 是编译期类型断言,非运行时转换。Number.isNaN('abc') === false。当前 number 字段经 buildNumberInput 的 parseInt(523 行)在非数字输入时存**真实 NaN**,故该检查对现有 number 路径有效;但一旦值以字符串形态出现(如 string 字段存数字串、或后续改存原始输入),非数字内容将绕过校验。 - **影响**:校验覆盖面脆弱、类型依赖隐性,后续重构易引入"无效数值放行"。 - **证据**:IntentDetailPage.ets:360(as number 断言);523(parseInt 失败产 NaN)。 - **建议**:改为 typeof v === 'number' && Number.isNaN(v),或对 number 类型字段统一用 Number(value) 解析并校验 isNaN。 ### [SEC-001] 校验失败日志模板字符串直接插值(P3, scanner=security-scanner) - **位置**:services/dialog_ui/ams_system_dialog/feature/src/main/ets/view/IntentDetailPage.ets:363 - **触发路径**:hilog.error(DOMAIN, TAG, \submitForm validation failed: required field '${key}' is missing\) —— ${key} 来自意图元数据 this.required(this.intentDetail.parameters['required']),以模板字符串直接嵌入,未走 hilog 格式符/隐私标记。 - **影响**:key 含 \r/\n 时可造成日志注入/格式污染;调试工具且数据为测试意图,实际影响极小。 - **证据**:IntentDetailPage.ets:363(模板插值);key 来源见 128-129 行。 - **建议**:改用 hilog.error(DOMAIN, TAG, 'submitForm validation failed: required field %{public}s is missing', key)。 --- > 修复由用户确认后另起任务执行,本检视不改源码。 See merge request: openharmony/ability_ability_runtime!20232 | 3 天前 | |
Add cfi/pac config Co-Authored-By: Agent Signed-off-by: wangzhen <wangzhen416@huawei.com> 🤖 AI[0%] 👌 AI Adopted[0%] 🧑 Human[100%] | 1 个月前 | |
new process Signed-off-by: wendel <yuwenze1@huawei.com> Co-Authored-By: Agent Change-Id: Icd39e8a6fa7ada974eae4bcb080c851027e6ef9e | 4 个月前 | |
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> | 11 天前 | |
Warn fix Co-Authored-By: Agent Signed-off-by: wangzhen <wangzhen416@huawei.com> 🤖 AI[3%] 👌 AI Adopted[3%] 🧑 Human[97%] Change-Id: Idfdecf1c59a96756280efed987fddab81239203b | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 天前 | ||
| 11 天前 | ||
| 3 天前 | ||
| 2 天前 | ||
| 1 个月前 | ||
| 3 天前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 11 天前 | ||
| 1 个月前 |