openharmony_ci
d2f3972416
!3819 merge 0822 into master
...
质量加固
Created-by: zhangsaiyang1
Commit-by: zhangsaiyang1
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用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3819
2026-08-24 13:16:23 +08:00
openharmony_ci
2abbb074c8
!3815 merge fix/code-review-aug20 into master
...
代码检视问题修改
Created-by: yzy-15
Commit-by: yzy-15
Merged-by: openharmony_ci
Description: **IssueNo**: #3164
**Description**: 代码检视问题修改
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | 已自检:P1-12 ParamCommonEvent加mutex,P1-11 LoadDataFromDb加锁,P1-9 configMutex_保护configUpdateTime_ |
| 成员变量进行赋值或创建需要排查并发 | 已自检:atTimerWakeUpTime_/limiterTimerReportId_/reportDiskUseTimerId_/isInitialized_/hasCachedConfig_改为atomic |
| 谨慎在lambda表达式中使用引用捕获 | 已自检:P1-5 FormProxyRegistry callback从[this]改为[weak=weak_from_this()] |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | 不涉及 |
| map\vector\list\set等stl模板类使用时需要排查并发 | 已自检:P1-3 FormRouterProxyMgr TOCTOU修复,P1-11 LoadDataFromDb map加锁,P1-12 eventHandles_加mutex |
| 谨慎考虑加锁范围 | 已自检:P1-5析构函数移除冗余锁,P1-8 CreateLimiterTimer锁内check-create,P1-12 handler在锁外调用 |
| 在IPC通信中谨慎使用同步通信方式 | 不涉及 |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | 已自检:P1-5 callback不再捕获this,改用weak_ptr |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | 不涉及 |
| 禁止多个独立创建的智能指针管理同一地址 | 不涉及 |
| 禁止在析构函数中抛异步任务 | 已自检:P5-3 FormShareMgr析构移除shared_from_this(),改用OnStop()中调UnregisterObserver() |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | 不涉及 |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | 已自检:P2-9 callerToken判空,P4-1 connect判空 |
| 禁止接口返回局部变量引用 | 不涉及 |
| 禁止在信号函数中加锁 | 不涉及 |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | 不涉及 |
| 禁止将同一个cpp编译在不同的so中 | 不涉及 |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | 不涉及 |
| json对象在取值之前必须先判断类型,避免类型不匹配 | 不涉及 |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | 不涉及 |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | 已自检:P1-1 atTimerWakeUpTime_从long改为int64_t |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | 不涉及 |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | 已自检:P4-2 castFormsCount/tempFormsCount赋初值0 |
| readParcelable获取的对象使用前需要判空 | 不涉及 |
| 分配和释放内存的函数需要成对出现 | 不涉及 |
| 申请内存后异常退出前需要及时进行内存释放 | 不涉及 |
| 内存申请前必须对内存大小进行合法性校验 | 不涉及 |
| 内存分配后必须判断是否成功 | 不涉及 |
| 禁止使用realloc、alloca函数 | 不涉及 |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | 不涉及 |
| 禁止打印内存地址 | 不涉及 |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | 已自检:P3-1/P3-2 errno检查+范围校验,P3-3 NANO_PER_SECOND溢出检查 |
| 禁止对有符号整数进行位操作符运算 | 不涉及 |
| 禁止对指针进行逻辑或位运算 | 不涉及 |
| 循环次数如果收外部数据控制,需要检验其合法性 | 不涉及 |
| 禁止使用内存操作类危险函数,需要使用安全函数 | 不涉及 |
| 谨慎使用不可重入函数 | 已自检:P3-1/P3-2 errno为thread-local,strtol/strtoll线程安全 |
| 必须检查安全函数的返回值,并进行正确处理 | 已自检:P2-6 GetOsAccountLocalIdFromUid,P2-8 GetFormLock,P2-10 GetFormRecord,P5-1 PushFormEvent |
| 禁止仅通过TokenType类型判断绕过权限校验 | 不涉及 |
**TDD Result**: 已更新测试文件:fms_form_timer_mgr_test.cpp删除IsDynamicTimerExpired用例,formtimermgrtwo_fuzzer.cpp删除fuzzer引用,fms_form_surface_info_test.cpp更新ReadFromParcel测试
**XTS Result**: 低风险。改动为内部实现变更(atomic类型、mutex锁范围、输入校验),对XTS接口不可见
### 是否已执行L0用例
- [ ] 已验证
- [x] 不涉及。如不涉及,请写明理由:本PR为代码检视问题修复,涉及并发安全加固、输入校验、整数溢出防护等内部实现变更,不改变对外接口签名和行为
See merge request: openharmony/ability_form_fwk!3815
2026-08-24 10:21:50 +08:00
zhangsaiyang1
a70d159e10
修改检视意见
...
Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com >
2026-08-22 17:44:14 +08:00
zhangsaiyang1
1a64766acf
修改检视意见
...
Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com >
2026-08-22 16:34:31 +08:00
zhangsaiyang1
31e5e5012a
告警修改,解决空指针引用、判空缺失、资源泄露、输入验证不足、竞态条件、整数溢出、类型问题
...
Co-Authored-By: Agent
Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com >
2026-08-22 16:17:12 +08:00
yzy-15
330d50667f
fix: update test to use -> for shared_ptr<FormProxyRegistry> access
...
FormCallbackAdapter members changed from direct FormProxyRegistry to
shared_ptr<FormProxyRegistry>. Update fms_form_callback_adapter_test.cpp
to use -> instead of . for all registry member access.
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: Ifaf783c54542cedb92897f428f056cd9d023b026
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 20:58:06 +08:00
openharmony_ci
9b16e963bc
!3817 merge code-optimization into master
...
代码结构优化
Created-by: luyangyi
Commit-by: luyangyi
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/ability_form_fwk/issues/3166
**Description**:
代码结构优化,不改变现有业务逻辑。
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | pass |
| 成员变量进行赋值或创建需要排查并发 | pass |
| 谨慎在lambda表达式中使用引用捕获 | pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | pass |
| 谨慎考虑加锁范围 | pass |
| 在IPC通信中谨慎使用同步通信方式 | pass |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | pass |
| 禁止多个独立创建的智能指针管理同一地址 | pass |
| 禁止在析构函数中抛异步任务 | pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | pass |
| 禁止接口返回局部变量引用 | pass |
| 禁止在信号函数中加锁 | pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | pass |
| 禁止将同一个cpp编译在不同的so中 | pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | 不涉及 |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | pass |
| readParcelable获取的对象使用前需要判空 | pass |
| 分配和释放内存的函数需要成对出现 | pass |
| 内存申请前必须对内存大小进行合法性校验 | pass |
| 内存分配后必须判断是否成功 | pass |
| 禁止使用realloc、alloca函数 | pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | pass |
| 禁止打印内存地址 | pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | pass |
| 禁止对有符号整数进行位操作符运算 | pass |
| 禁止对指针进行逻辑或位运算 | pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | pass |
| 谨慎使用不可重入函数 | pass |
| 必须检查安全函数的返回值,并进行正确处理 | pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | pass |
**TDD Result**:
存量用例通过。
**XTS Result**:
不涉及,未修改对外接口行为。
### 是否已执行L0用例
- [ ] 已验证
- [x] 不涉及。如不涉及,请写明理由
理由:代码结构优化,无业务逻辑变更。
See merge request: openharmony/ability_form_fwk!3817
2026-08-21 19:02:24 +08:00
luyangyi
106a1db94a
update: 更新文件 form_data_mgr.cpp
...
Signed-off-by: luyangyi <luyangyi2@huawei.com >
2026-08-21 16:58:37 +08:00
luyangyi
178148d3bd
update: 更新文件 form_visibility_adapter.cpp
...
Signed-off-by: luyangyi <luyangyi2@huawei.com >
2026-08-21 16:56:00 +08:00
luyangyi
d54251a35e
update: 更新文件 form_data_mgr.cpp
...
Signed-off-by: luyangyi <luyangyi2@huawei.com >
2026-08-21 16:54:17 +08:00
yzy-15
f437db03dc
fix: add borderWidth negative check, restore atomic include, refine overflow return
...
form_surface_info: add borderWidth < 0 check (0 is valid for no
border, negative is invalid).
form_render_service_mgr.h: restore #include <atomic> for explicit
dependency clarity.
form_util.cpp: remove return 0 on ConvertStringToLongLong overflow.
strtoll already clamps to LLONG_MAX/LLONG_MIN, returning the clamped
value is more informative than 0. Error is still logged.
AI[93%] Human Fixed[0%] Human[7%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: Ifde90d134691f410cd3931cfe3cf5cceba45c01a
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 16:50:08 +08:00
luyangyi
b56652ad3f
代码结构优化
...
Co-Authored-By: Claude <noreply@anthropic.com >
AI[93%] Human Fixed[0%] Human[7%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: claude (auto) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I96fce8695757af0ae1c80858946d157f92e4fe2c
Signed-off-by: luyangyi <luyangyi2@huawei.com >
2026-08-21 16:42:27 +08:00
yzy-15
c96764f939
fix: revert P1-11 LoadDataFromDb lock, keep IsBundleDistributedInit lock
...
IsBundleDistributedInit() already holds unique_lock which serializes
Init() calls. LoadDataFromDb() is always called under this lock, so
its map writes are already protected. Adding a separate lock in
LoadDataFromDb() was unnecessary and removed the serialization
benefit of the caller's lock. Revert to upstream's original pattern.
AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%]
Change-Id: If59f5f2a0f9f514f5233fbec4e2765feea48c54e
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 16:29:13 +08:00
openharmony_ci
936d445dc9
!3753 merge 0729 into master
...
安全告警修改,callback需要有初始值,unTrustList_使用c++风格遍历,ExecOnUnlockTask中onUnlockTask_回调应放在锁外,ReportQueueOverLimit添加注释,form_report_test.cpp删除重复无效用例
Created-by: zhangsaiyang1
Commit-by: zhangsaiyang1
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用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3753
2026-08-21 16:16:00 +08:00
yzy-15
bb2e984e3a
fix: correct overflow check boundary in form_time_util (S2)
...
Change > to >= in tv_sec overflow check. When tv_sec equals
INT64_MAX / NANO_PER_SECOND (9223372036, ~year 2262), the
subsequent tv_sec * NANO_PER_SECOND + tv_nsec can still overflow
int64_t because tv_nsec (max 999999999) exceeds the remaining
headroom (854775807).
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: Ie99ef763546b3a10de0b3ca71089c936e306243d
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:29:30 +08:00
yzy-15
8d72bbd325
fix: remove unnecessary configUpdateTime_ write in OnConfigurationUpdatedInner
...
The configUpdateTime_ time-based debounce is redundant with the
CancelDelayTask + ScheduleDelayTask mechanism. Remove the write
so configUpdateTime_ stays at construction-time value, making the
duration check always pass (process immediately). The task-level
debounce via ScheduleDelayTask is sufficient.
AI[0%] Human Fixed[0%] Human[0%] AI Adopted[0%]
Change-Id: If631d3eb9d25c60051374f7d36ff069494a7856f
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:12:28 +08:00
yzy-15
baf6fc8ca5
fix: simplify weak_ptr capture and init tempFormsCount
...
FormProxyRegistry: simplify lambda capture from two-line pattern to
direct init capture [weak = weak_from_this()].
FormRenderReport: initialize tempFormsCount = 0, matching the
existing castFormsCount initialization. Prevents use of uninitialized
value if GetTempFormsCount fails.
AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%]
Change-Id: Iaa47ca2f98d6a844aaa70f1f77c7597fa171fffc
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:02:16 +08:00
yzy-15
80adc31eef
fix: rename tokens to splitResult in param_reader for clarity
...
Rename the temporary variable 'tokens' to 'splitResult' in all three
StringUtils::split calls (P2-1, P2-2, P2-3) for better readability.
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I73d0ace456d9aaf9578e2b33b7f45e6cb8540baa
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:02:16 +08:00
yzy-15
055faad795
fix: GetFormLock failure should return default lock status, not true
...
Cards have a default lock status of false (unlocked). When GetFormLock
fails, returning true (locked) incorrectly blocks operations that
should be allowed. Remove the fail-closed return and let the default
false value pass through with an error log.
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: Idaaa69efd9422d7a991ff6d677e1ae3ca536845d
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:02:16 +08:00
yzy-15
48315978c7
fix: remove unnecessary empty check, fix indentation, remove redundant lock
...
P2-7: Remove callerBundleName.empty() check — GetNameForUid returning
ERR_OK implies a valid name was set, empty check is redundant.
P2-5: Fix indentation in AddFormTimerForMultiUpdate — added validation
code had 4 extra spaces, now matches surrounding code style.
P1-5: Remove mutex lock from ~FormProxyRegistry — with shared_ptr
management, destructor runs only when ref count is 0, meaning no
concurrent access is possible. weak_ptr::lock() returns nullptr
atomically. Keep death recipient cleanup (still needed to unregister
from IPC framework).
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I83aa22f357c03822f5a6f2ececb39b5cc2697850
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:02:16 +08:00
yzy-15
e847a3519f
fix: add mutex for configUpdateTime_ to fix data race (P1-9)
...
configUpdateTime_ is accessed from both IPC thread (OnConfigurationUpdated)
and serialQueue thread (OnConfigurationUpdatedInner) without synchronization.
Add std::mutex configTimeMutex_ and lock both the read (line 483) and
write (line 509) sites. Read copies the value under lock then uses the
copy outside the lock scope to avoid holding the mutex during computation.
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I3db30c4c23e94f149fb3cb186d421ff6f0362a07
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:02:16 +08:00
yzy-15
2cb20e5187
fix: break circular reference between FormShareMgr and FormEventHandler
...
observers_ in FormEventHandler stores shared_ptr (not weak_ptr),
creating a cycle: FormShareMgr -> eventHandler_ -> FormEventHandler
-> observers_ -> FormShareMgr. Neither object can be destroyed.
The destructor cannot call UnregisterEventTimeoutObserver because
shared_from_this() throws bad_weak_ptr when ref count is 0.
Add UnregisterObserver() to FormShareMgr and call it from
FormMgrService::OnStop() before handler_.reset(). At that point
shared_from_this() is still valid, the observer is removed from
observers_, and eventHandler_ is set to nullptr, breaking the cycle.
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: Ibf691a5f27d55e63ee1a49a172ba8b1554e87bb4
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:00:44 +08:00
yzy-15
257e85f615
fix: revert redundant permission check in UpdateSubscribeFormData
...
P6-1: RequestRefresh (called before UpdateSubscribeFormData) already
validates via TYPE_UNTRUST_APP (FormTrustMgr::IsTrust), TYPE_CALLING_USER,
and TYPE_MULTI_ACTIVE_USERS checks. If validation fails, UpdateSubscribeFormData
is never reached (early return at form_data_adapter.cpp:127-130).
callingUid from IPCSkeleton::GetCallingUid() cannot be spoofed.
The added callerBundleName check was redundant and has been removed.
AI[0%] Human Fixed[0%] Human[0%] AI Adopted[0%]
Change-Id: I32cedd7b3726644d6e7025e2b16f057b907a07d4
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:00:44 +08:00
yzy-15
f8bb91f238
fix: use weak_ptr in FormProxyRegistry callback, revert Init return false
...
P1-5: Move mutex and maps into shared_ptr<SharedState>. The death
callback now captures weak_ptr<SharedState> instead of raw this.
When the registry is destroyed, in-flight callbacks either find the
weak_ptr expired (safe exit) or hold a shared_ptr that extends the
state lifetime until the callback completes. This eliminates the
use-after-free where the callback accessed destroyed mutex_ and maps.
P5-2: Revert return false on runtime_->Init and InsertHapPath failure.
Init failure does not affect business logic — the runtime remains
usable. Forcing return false prevents form rendering which is worse
than continuing with a partially initialized runtime.
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I8d0e580e403c20dffc2c529cbca9d040074dd898
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 15:00:44 +08:00
yzy-15
e996411961
fix: add mutex to ParamCommonEvent and remove unused GetCompatibleVersion
...
P1-12: Add std::mutex eventMutex_ to ParamCommonEvent. OnReceiveEvent
copies handler under lock and calls it outside lock scope. UnSubscriberEvent
clears maps under lock after unsubscribing, preventing concurrent access
from CES thread during SA lifecycle events (OnStop).
P3-4: Remove dead code FormBmsHelper::GetCompatibleVersion which was never
called anywhere in the codebase and contained uint32_t to int32_t
truncation via static_cast.
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: Ieb1b08408d77521bde82a96ada85f5d50c21c2d4
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 14:59:31 +08:00
yzy-15
71db7608b3
fix: resolve 32 code review issues from form_fwk audit
...
Concurrency fixes:
- P1-1: atTimerWakeUpTime_ change to std::atomic<int64_t>
- P1-2: reportDiskUseTimerId_ change to std::atomic<uint64_t>
- P1-3: merge HasRouterProxy check and map access into single lock scope
- P1-4: unsubscribe common event before clearing event handles map
- P1-5: remove death recipients before clearing in FormProxyRegistry destructor
- P1-7: limiterTimerReportId_ change to std::atomic<uint64_t>
- P1-8: protect CreateLimiterTimer check-create-store with mutex, validate CreateTimer return
- P1-9: hasCachedConfig_ change to std::atomic<bool>
- P1-10: isInitialized_ change to std::atomic<bool>, add lock in Init()
- P1-11: add mutex lock in LoadDataFromDb
Input validation fixes:
- P2-1/P2-2/P2-3: add size check before StringUtils::split[1] access
- P2-4: validate float params in FormSurfaceInfo::ReadFromParcel
- P2-5: add hour/minute range validation in UpdateTimerValue
- P2-6: check GetOsAccountLocalIdFromUid return value
- P2-7: add empty string check for callerBundleName
- P2-8: check GetFormLock return value, fail-closed
- P2-9: add callerToken null check in SetFormAddObserver/SetFormRemoveObserver
- P2-10: check GetFormRecord return value in AcquireProviderFormInfo
Integer/type fixes:
- P3-1: add errno check in ConvertStringToLongLong
- P3-2: add overflow check in ConvertStringToInt
- P3-3: change NANO_PER_SECOND to int64_t
Null pointer/uninitialized fixes:
- P4-1: add connect parameter null check in ConnectServiceAbilityWithUserId
- P4-2: initialize castFormsCount to 0
Resource management fixes:
- P5-1: check PushFormEvent return value in AddTaskToQueuePush
- P5-2: return false on runtime Init/InsertHapPath failure
- P5-3: replace shared_from_this with raw pointer in FormShareMgr destructor
Dead code removal:
- P7-1: remove unused IsDynamicTimerExpired with self-deadlock risk
Permission check:
- P6-1: add caller identity verification in UpdateSubscribeFormData
Low-risk fixes:
- P8-1: check RegisterBundleEventCallback return value
- P8-2: same as P3-2
Documentation:
- F4/F5: add lock behavior comments for DeleteRenderRecordByUid and SetCriticalFalseOnAllFormInvisible
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: I07c6b44bedb54aae4f3706ca2376ebee13b04bc5
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-21 14:59:31 +08:00
openharmony_ci
b6971faa43
!3796 merge master_form_fix into master
...
卡片问题修复
Created-by: xiangcong3
Commit-by: xiangcong3
Merged-by: openharmony_ci
Description: ### 关联 Issue
Close #3052
### 变更说明
针对卡片管理框架进行问题修复,覆盖 NAPI 接口层、inner_api IPC 层与 services 服务层的输入校验、边界检查与异常处理加固,共 42 文件 +325/-106。
### 变更范围
- **NAPI 接口层**:`formHost`/`formProvider`/`formUtil`/`form_state_observer`/`form_provider` 入参校验加固与空指针保护
- **inner_api 层**:`form_host_stub`/`form_mgr_proxy`/`form_mgr_stub` IPC 入参校验,`form_constants` 常量补充
- **services 层**:`form_mgr`/`data_center`/`common`/`feature`/`form_render` 多模块输入验证、边界保护与异常处理加固
### 自检
- [x] 签名规范(Signed-off-by)
- [x] 编译通过
- [x] 已基于最新 master 变基
See merge request: openharmony/ability_form_fwk!3796
2026-08-21 14:34:49 +08:00
xiangcong3
90db2ba7fd
检视意见修改
...
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%]
2026-08-21 10:28:49 +08:00
openharmony_ci
5db543721b
!3805 merge master into master
...
fix: add CheckCallerIsSystemApp in ChangeSceneAnimationState
Created-by: AspTATA
Commit-by: AspTATA
Merged-by: openharmony_ci
Description: **IssueNo**: 3152
**Description**: 服务端 ChangeSceneAnimationState 缺失系统应用校验,三方应用可通过
直发 IPC 绕过 NAPI 层校验达成长时激活场景动画。补齐系统应用权限校验。
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | |
| 成员变量进行赋值或创建需要排查并发 | |
| 谨慎在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用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3805
2026-08-20 22:46:27 +08:00
openharmony_ci
8e6339d7e8
!3801 merge fix/liveform-app-lock into master
...
fix: cancel active liveform scene effects on app lock
Created-by: luyangyi
Commit-by: luyangyi
Merged-by: openharmony_ci
Description: **IssueNo**: #3147
**Description**:
应用被锁定(ProtectLockForms)时,处于激活态的互动卡(liveform)未被正确取消激活:原 `CancelOverflow` 只取消了 overflow(RequestOverflow),未取消场景动画激活态(ChangeSceneAnimationState Deactivated),卡片仍保持展开;且对 bundle 下所有卡片都发起取消,未判断 liveform 是否激活,产生冗余 IPC。
本次改动:
- 将 `CancelOverflow` 重命名为 `CancelSceneEffects`,同时取消 overflow 与场景动画激活态。
- `ProtectLockForms` 中通过 `GetLiveFormStatus` 一次性获取所有 liveform 状态,新增 `IsLiveFormActive` 判断,仅对状态为 ACTIVE 的卡片调用 `CancelSceneEffects`,减少 IPC。
**稳定性自检:**
| 自检项 | 自检结果 |
| --- | --- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | 不涉及,CancelSceneEffects 内 IPC 为异步调用;ProtectLockForms 在事件队列任务中顺序执行 |
| 成员变量进行赋值或创建需要排查并发 | 不涉及,liveFormStatusMap 为函数局部变量 |
| 谨慎在lambda表达式中使用引用捕获 | 不涉及 |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | 不涉及 |
| map\vector\list\set等stl模板类使用时需要排查并发 | 不涉及,liveFormStatusMap 为局部变量,无跨线程访问 |
| 谨慎考虑加锁范围 | 不涉及 |
| 在IPC通信中谨慎使用同步通信方式 | 不涉及,均为异步 IPC |
| 禁止传递this指针至其他模块或线程 | 不涉及 |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | 不涉及 |
| 禁止多个独立创建的智能指针管理同一地址 | 不涉及 |
| 禁止在析构函数中抛异步任务 | 不涉及 |
| 禁止js对象在非js线程创建、使用或销毁 | 不涉及 |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | 不涉及,overflowProxy/sceneProxy 已判空 |
| 禁止接口返回局部变量引用 | 不涉及 |
| 禁止在信号函数中加锁 | 不涉及 |
| 禁止在关键流程执行耗时的操作 | 不涉及 |
| 禁止将同一个cpp编译在不同的so中 | 不涉及 |
**安全编码自检:**
| 自检项 | 自检结果 |
| --- | --- |
| 裸指针避免通过隐式转换构造为sptr | 不涉及 |
| json对象在取值之前必须先判断类型 | 不涉及 |
| 序列化时必须对传入的数组大小进行校验 | 不涉及 |
| 避免使用未明确位宽的整型 | 不涉及 |
| 外部传入的路径要做规范化校验 | 不涉及 |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | overflowRet/sceneRet 已赋初值 ERR_OK |
| readParcelable获取的对象使用前需要判空 | 不涉及 |
| 分配和释放内存的函数需要成对出现 | 不涉及 |
| 申请内存后异常退出前需要及时进行内存释放 | 不涉及 |
| 内存申请前必须对内存大小进行合法性校验 | 不涉及 |
| 内存分配后必须判断是否成功 | 不涉及 |
| 禁止使用realloc、alloca函数 | 不涉及 |
| 禁止打印文件路径、口令等敏感信息 | 不涉及 |
| 禁止打印内存地址 | 不涉及 |
| 整数之间运算时必须严格检查溢出、反转、除0 | 不涉及 |
| 禁止对有符号整数进行位操作符运算 | 不涉及 |
| 禁止对指针进行逻辑或位运算 | 不涉及 |
| 循环次数如果受外部数据控制,需要检验其合法性 | 不涉及,遍历 formRecord.formUserUids |
| 禁止使用内存操作类危险函数 | 不涉及 |
| 谨慎使用不可重入函数 | 不涉及 |
| 必须检查安全函数的返回值 | 不涉及 |
| 禁止仅通过TokenType类型判断绕过权限校验 | 不涉及 |
**TDD Result**: 新增 FmsFormLifecycleAdapterTest IsLiveFormActive_001/002 单元测试,覆盖激活态("20"/"21")返回 true、非激活/暂停/缺失/未知状态返回 false。
**XTS Result**:
### 是否已执行L0用例
- [ ] 已验证
- [x] 不涉及。本次改动为应用锁场景下互动卡激活态取消逻辑修正,不改变对外接口,L0用例不受影响。
See merge request: openharmony/ability_form_fwk!3801
2026-08-20 19:43:34 +08:00
openharmony_ci
1547305377
!3751 merge master into master
...
fix:质量加固
Created-by: gcw_jtkehB7L
Commit-by: wanrenjie
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用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3751
2026-08-20 19:39:06 +08:00
wanrenjie
89a90b17e9
fix: 修正ANI非法FormState日志级别
...
Change-Id: Ife4d574ef76a49a1de84a78db69a5888fd7de2b0
Signed-off-by: wanrenjie <wanrenjie1@huawei.com >
2026-08-20 16:49:32 +08:00
wanrenjie
c6752eda52
fix: 修复可见性通知ANI local scope未正确释放问题
...
Change-Id: I96df0d7678b4e49322e9eb93bdf9e7618cfb9252
Signed-off-by: wanrenjie <wanrenjie1@huawei.com >
2026-08-20 16:49:32 +08:00
wanrenjie
b9725ecbee
revert: 回退LiveFormExtension native实例绑定修改
...
Change-Id: Iaf28287c172beb368dd8d786b11fa0ab7787de8b
Signed-off-by: wanrenjie <wanrenjie1@huawei.com >
2026-08-20 16:49:32 +08:00
xiangcong3
74343af7dd
检视意见修改
...
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%]
2026-08-20 16:31:51 +08:00
xiangcong3
789bed3414
CodeCheck告警修改
...
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%]
2026-08-20 16:31:51 +08:00
xiangcong3
1809f89191
检视意见修改
...
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%]
2026-08-20 16:31:51 +08:00
xiangcong3
2f3b1ccc0a
卡片问题修复
...
Signed-off-by: xiangcong3 <xiangcong4@huawei.com >
AI[0%] Human Fixed[0%] Human[100%] AI Adopted[0%]
2026-08-20 16:31:50 +08:00
luyangyi
8fc7242058
Merge branch 'fix/liveform-app-lock' of git@gitcode.com:luyangyi/ability_form_fwk.git into 'master'
...
# Conflicts:
# conflict services/include/form_mgr/form_lifecycle_adapter.h
2026-08-20 14:26:08 +08:00
openharmony_ci
f9c84fb423
!3808 merge fix/parcel-input-validation into master
...
fix: harden IPC parcel reading and input validation in form_fwk
Created-by: yzy-15
Commit-by: yzy-15
Merged-by: openharmony_ci
Description: **IssueNo**: #3156
**Description**: 代码优化
**稳定性自检:**
| 自检项 | 自检结果 |
| ------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | 已加锁/CAS |
| 成员变量进行赋值或创建需要排查并发 | connectId_改atomic |
| 谨慎在lambda表达式中使用引用捕获 | 不涉及 |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | 不涉及 |
| map\vector\list\set等stl模板类使用时需要排查并发 | renderFormConnections_已用swap+锁保护 |
| 谨慎考虑加锁范围 | 已缩小DisconnectAllRenderConnections锁范围 |
| 在IPC通信中谨慎使用同步通信方式 | 不涉及 |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | 不涉及 |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | 不涉及 |
| 禁止多个独立创建的智能指针管理同一地址 | 不涉及 |
| 禁止在析构函数中抛异步任务 | 不涉及 |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | 不涉及 |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | 已加判空 |
| 禁止接口返回局部变量引用 | 不涉及 |
| 禁止在信号函数中加锁 | 不涉及 |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | 不涉及 |
| 禁止将同一个cpp编译在不同的so中 | 不涉及 |
**安全编码自检:**
| 自检项 | 自检结果 |
| ------ | -------- |
| 裸指针避免通过隐式转换构造为sptr | 不涉及 |
| json对象在取值之前必须先判断类型,避免类型不匹配 | 不涉及 |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | 已校验infoSize/size |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | 不涉及 |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | 不涉及 |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | 已赋初值0 |
| readParcelable获取的对象使用前需要判空 | 已加判空 |
| 分配和释放内存的函数需要成对出现 | 不涉及 |
| 申请内存后异常退出前需要及时进行内存释放 | 不涉及 |
| 内存申请前必须对内存大小进行合法性校验 | 不涉及 |
| 内存分配后必须判断是否成功 | 不涉及 |
| 禁止使用realloc、alloca函数 | 不涉及 |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | 已去敏(不打印JSON内容) |
| 禁止打印内存地址 | 不涉及 |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | 已修复时间差溢出 |
| 禁止对有符号整数进行位操作符运算 | 不涉及 |
| 禁止对指针进行逻辑或位运算 | 不涉及 |
| 循环次数如果收外部数据控制,需要检验其合法性 | 已校验枚举范围 |
| 禁止使用内存操作类危险函数,需要使用安全函数 | 不涉及 |
| 谨慎使用不可重入函数 | 不涉及 |
| 必须检查安全函数的返回值,并进行正确处理 | 已检查ReadInt64等返回值 |
| 禁止仅通过TokenType类型判断绕过权限校验 | 不涉及 |
**TDD Result**: 待补充单元测试
**XTS Result**:
### 是否已执行L0用例
- [ ] 已验证
- [x] 不涉及。本次修改为安全加固,不改变正常流程逻辑,现有用例覆盖
See merge request: openharmony/ability_form_fwk!3808
2026-08-20 14:15:06 +08:00
openharmony_ci
9a86dd34c4
!3811 merge fix/form-display-id-param into master
...
Add form display id want param constant
Created-by: luyangyi
Commit-by: luyangyi
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/arkui_ace_engine/issues/80890
**Description**:
新增 Want 参数常量 `PARAM_FORM_DISPLAY_ID_KEY = "ohos.extra.param.key.form_display_id"`,供卡片宿主向卡片渲染服务传递卡片所在的 displayId。
背景:卡片渲染进程没有窗口("ArkTSCard need no window"),本地取不到卡片所在屏,密度只能回退到 `SystemProperties::GetResolution()` —— 那是初始化阶段从**默认屏**取的静态快照。多屏设备开机阶段默认屏可能还不是卡片所在屏,导致宿主重启后卡片按错误密度渲染。修复方案是宿主沿既有 Want 通道下发 displayId,渲染侧据此现场查询该屏的 `DensityInCurResolution`。
本仓改动两处,均为常量层面,无逻辑变更:
1. `form_constants.h` 定义该 key,放在 `PARAM_FORM_VIEW_SCALE` 旁(同属宿主下发给渲染服务的渲染参数)。定义在本仓是为了让宿主侧与渲染侧共用同一份定义,避免两端各自维护字符串字面量。
2. `form_want.cpp` 的 `FILTER_INTERNAL_PARAMS_` 加入该 key。它与已在表中的 `FORM_DENSITY`、`PARAM_FORM_VIEW_SCALE` 同类,属于卡片域内部的渲染参数,Want 传出 form 域时应被过滤,不应暴露给卡片提供方。
配套的使用方改动在 arkui_ace_engine 仓(PR !88507),依赖本 PR 先合入。
**稳定性自检:**
本次改动仅新增一个 `constexpr const char*` 常量定义与一个 `unordered_set` 静态初始化列表成员,不含任何可执行逻辑、指针操作、并发访问或生命周期管理,下列自检项均不涉及。
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | 不涉及 |
| 成员变量进行赋值或创建需要排查并发 | 不涉及 |
| 谨慎在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**:
无逻辑变更,未新增用例。存量 `test/unittest/fms_form_want_test` 已覆盖 `FILTER_INTERNAL_PARAMS_` 相关接口(`FormWant_GetFilteredWant_001`、`FormWant_FilterInternalParams_001`),自验截图待补充。
**XTS Result**:
不涉及,未修改对外接口行为,仅新增内部常量定义。
### 是否已执行L0用例
- [ ] 已验证
- [x] 不涉及。如不涉及,请写明理由
理由:本 PR 仅新增一个 Want 参数常量定义并将其归类为卡片域内部参数,不含功能逻辑,无可执行的功能路径变更。功能验证在使用方 arkui_ace_engine PR !88507 中进行。
See merge request: openharmony/ability_form_fwk!3811
2026-08-20 12:10:39 +08:00
yzy-15
06f201e8e1
fix: harden IPC parcel reading and input validation in form_fwk
...
Check return values of ReadInt64/ReadInt32/ReadBool/ReadString16
in FormMgrStub, FormSupplyStub, and FormInstancesFilter handlers
to prevent use of uninitialized data on parcel read failure.
- Add range validation for FormLocation, FormFsmEvent, PublishFormErrorCode
- Fix integer overflow in time diff comparisons (OnNotifyRefreshForm,
UpdateReUpdateFormMap)
- Fix TOCTOU race in connectId_ using atomic compare_exchange
- Narrow lock scope in DisconnectAllRenderConnections via std::swap
- Add form owner check in DeleteThemeForm
- Add null checks for callerToken and remoteObject
- Add param length validation in AddForm and AllotThemeRecord
- Fix missing return in HiDumpHasFormVisible
- Change UpdateFormSize return type to void (unused return value)
AI[93%] Human Fixed[0%] Human[7%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Change-Id: If1210d3b00e3b405045d02f207c0ef1fce2bae80
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-19 18:23:09 +08:00
luyangyi
824ee8f641
update
...
Signed-off-by: luyangyi <luyangyi2@huawei.com >
2026-08-19 17:38:19 +08:00
openharmony_ci
f08425876a
!3810 merge fix/safe-json-parse into master
...
代码检视问题修改
Created-by: yzy-15
Commit-by: yzy-15
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/ability_form_fwk/issues/3158
**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用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3810
2026-08-19 14:59:01 +08:00
luyangyi
a1202d2551
Add form display id want param constant
...
The card host tells the form render service which display a card lives on
through a Want param, so the render side can query that display for its
density instead of relying on an init-time snapshot of the default display.
Define the key once here so the host and the render side share a single
definition, and treat it as an internal render param that is filtered out
when a Want leaves the form domain, the same as form_density and
form_view_scale.
Signed-off-by: luyangyi <luyangyi2@huawei.com >
Co-Authored-By: Claude <noreply@anthropic.com >
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: claude (auto) <ai@local>
Change-Id: Ibfcd6e9ad557fdb20cfe58213abae6042304e6c2
2026-08-19 14:26:06 +08:00
yzy-15
5453831d0f
代码检视问题修改
...
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com >
2026-08-19 11:46:47 +08:00
wanrenjie
11bc7c9568
fix: 修复 ani/napi 卡片框架多处空指针、资源泄漏与并发问题
...
Signed-off-by: wanrenjie <wanrenjie1@huawei.com >
Change-Id: I28709d2f5c16ab410c4b87ae6eca0fb09bcc36de
2026-08-18 18:55:17 +08:00
luyangyi
385d735a9b
fix: cancel active liveform scene effects on app lock
...
When an app is locked, ProtectLockForms only canceled overflow but left scene-animation activation active, so the liveform stayed expanded. It also issued the cancel for every form of the bundle regardless of liveform state, causing redundant IPC.
- Rename CancelOverflow to CancelSceneEffects; it now cancels both overflow (RequestOverflow) and scene-animation activation (ChangeSceneAnimationState Deactivated).
- In ProtectLockForms, fetch liveform status once via GetLiveFormStatus and call CancelSceneEffects only for forms whose status is ACTIVE (IsLiveFormActive), reducing IPC.
Co-Authored-By: Claude <noreply@anthropic.com >
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: claude (auto) <ai@local>
Co-authored-by: claude (glm-5.2) <ai@local>
Co-authored-by: claude (glm-5.3) <ai@local>
Change-Id: I2535fe81fc6af5fed9580e5014a597da507a9fd7
Signed-off-by: luyangyi <luyangyi2@huawei.com >
2026-08-18 17:43:34 +08:00
openharmony_ci
8297ab919d
!3781 merge ROM-Constants into master
...
ROM优化:Constants修改
Created-by: weixin_52227816
Commit-by: weixin_52227816
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/ability_form_fwk/issues/3128
**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用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3781
2026-08-18 17:37:56 +08:00
openharmony_ci
1e4416e41a
!3767 merge fuzz into master
...
代码优化
Created-by: wutouxu
Commit-by: wutouxu
Merged-by: openharmony_ci
Description: **IssueNo**:
**Description**:
**稳定性自检:**
| 自检项 | 自检结果 |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | pass |
| 成员变量进行赋值或创建需要排查并发 | pass |
| 谨慎在lambda表达式中使用引用捕获 | pass |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | pass |
| map\vector\list\set等stl模板类使用时需要排查并发 | pass |
| 谨慎考虑加锁范围 | pass |
| 在IPC通信中谨慎使用同步通信方式 | pass |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | pass |
| 禁止将外部传入的裸指针在内部直接构造智能指针 | pass |
| 禁止多个独立创建的智能指针管理同一地址 | pass |
| 禁止在析构函数中抛异步任务 | pass |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | pass |
| 禁止在对外接口中未经判空直接使用外部传入的指针 | pass |
| 禁止接口返回局部变量引用 | pass |
| 禁止在信号函数中加锁 | pass |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | pass |
| 禁止将同一个cpp编译在不同的so中 | pass |
**安全编码自检:**
| 自检项 | 自检结果 |
| -------------------------------------------------------------- | -------- |
| 裸指针避免通过隐式转换构造为sptr | pass |
| json对象在取值之前必须先判断类型,避免类型不匹配 | pass |
| 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | pass |
| 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | pass |
| 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | pass |
| 指针变量、表示资源描述符的变量、bool变量必须赋初值 | pass |
| readParcelable获取的对象使用前需要判空 | pass |
| 分配和释放内存的函数需要成对出现 | pass |
| 申请内存后异常退出前需要及时进行内存释放 | pass |
| 内存申请前必须对内存大小进行合法性校验 | pass |
| 内存分配后必须判断是否成功 | pass |
| 禁止使用realloc、alloca函数 | pass |
| 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | pass |
| 禁止打印内存地址 | pass |
| 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | pass |
| 禁止对有符号整数进行位操作符运算 | pass |
| 禁止对指针进行逻辑或位运算 | pass |
| 循环次数如果收外部数据控制,需要检验其合法性 | pass |
| 禁止使用内存操作类危险函数,需要使用安全函数 | pass |
| 谨慎使用不可重入函数 | pass |
| 必须检查安全函数的返回值,并进行正确处理 | pass |
| 禁止仅通过TokenType类型判断绕过权限校验 | pass |
**TDD Result**:pass
**XTS Result**:pass
### 是否已执行L0用例
- [x] 已验证
- [ ] 不涉及。如不涉及,请写明理由
See merge request: openharmony/ability_form_fwk!3767
2026-08-18 16:15:18 +08:00