936 Commits

Author SHA1 Message Date
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
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 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 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
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
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
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
wutouxu 139a60fa22 代码优化
AI[100%] Human Fixed[0%] Human[0%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>

Change-Id: I3c594631e4e78deed759e743511797e86d45576d
Signed-off-by: wutouxu <zhaolixue2@huawei.com>
2026-08-18 10:52:02 +08:00
weixin_52227816 8890432f49 ROM优化:Constants修改
Signed-off-by: weixin_52227816 <zhuzheng24@huawei.com>
Change-Id: I6c1d64cffce740f573d89be289a469875f46178a
2026-08-14 17:14:21 +08:00
zhangsaiyang1 1c415276ed 修改检视意见
Co-Authored-By: None

Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com>
2026-08-14 11:05:46 +08:00
zhangsaiyang1 09f18567be 修复按钮按钮无效
Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com>
2026-08-11 20:13:41 +08:00
openharmony_ci 7d16b080e9 !3762 merge master into master
fix: 修复form_fwk空指针、并发竞争、IPC鉴权及整数溢出等安全问题

Created-by: AspTATA
Commit-by: AspTATA
Merged-by: openharmony_ci
Description: **IssueNo**: 3115

**Description**: 
- FFI入口新增空指针检查,new(nothrow)返回值判空
- 修复GetBundleMgr与FormSupplyCallback单例DCLP竞争(改call_once)
- SetBackgroundFunction补写InterfaceToken并改用标准SendTransactCmd
- FormHostProxy写token失败后补return,不再继续发送
- GetStringInfo读取失败返回ERR_COMMON_CODE,避免false误判为成功
- SetUIExtCustomDensity新增上界校验与浮点乘法溢出预判
- GetFilesSize累加与LINEAR重试延迟乘法新增整数溢出预判
- Dump入口集中校验系统应用权限

**稳定性自检:**
| 自检项                                                       | 自检结果  |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发              |   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**: 不涉及

**XTS Result**: 不涉及

### 是否已执行L0用例
- [ ] 已验证
- [√ ] 不涉及。如不涉及,请写明理由


See merge request: openharmony/ability_form_fwk!3762
2026-08-11 17:37:11 +08:00
AspTATA c6bbf9429e revert: 撤回HandleSetBackgroundFunction及长度校验常量,#23仅修复Proxy端
Signed-off-by: AspTATA <xionglinhong1@huawei.com>
2026-08-06 20:45:38 +08:00
luyangyi 24cd3bd948 修复并发安全问题
AI[95%] Human Fixed[0%] Human[5%] AI Adopted[100%]
Co-authored-by: claude (auto) <ai@local>
Co-authored-by: claude (glm-5.2) <ai@local>
Co-authored-by: claude (auto) <ai@local>
Co-authored-by: claude (glm-5.2) <ai@local>

Change-Id: I3156f8ef06719f0551e8abc40092a02d848063c9
Signed-off-by: luyangyi <luyangyi2@huawei.com>
2026-08-06 20:32:58 +08:00
AspTATA 7b771b1494 fix: GetFilesSize溢出时保持filesSize与totalSize一致,HandleSetBackgroundFunction补长度校验
Signed-off-by: AspTATA <xionglinhong1@huawei.com>
2026-08-06 19:42:38 +08:00
openharmony_ci a4828db4ed !3745 merge 0513 into master
FRS和FMS通信完善

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!3745
2026-08-06 13:23:10 +08:00
wutouxu 758e32322d FRS和FMS通信完善
AI[25%] Human Fixed[0%] Human[75%] AI Adopted[100%]
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (glm-5.2) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>

Change-Id: I5c3f124241e476432339bf7b01679c0c5a238384
Signed-off-by: wutouxu <zhaolixue2@huawei.com>
2026-08-06 09:49:54 +08:00
zhangsaiyang1 09b90bc6a7 Merge branch '0731' of git@gitcode.com:zhangsaiyang1/ability_form_fwk.git into 'master'
# Conflicts:
#   conflict services/src/common/util/form_report.cpp
2026-08-04 14:09:27 +08:00
zhangsaiyang1 016f25df4d 修改检视意见
Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com>
2026-08-04 11:46:55 +08:00
openharmony_ci 2c9ebde49c !3761 merge security into master
fix: add input validation and null checks for security hardening

Created-by: yzy-15
Commit-by: yzy-15
Merged-by: openharmony_ci
Description: **IssueNo**:https://gitcode.com/openharmony/ability_form_fwk/issues/3113

**Description**:

**稳定性自检:**
| 自检项                                                       | 自检结果  |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发              | pass     |
| 成员变量进行赋值或创建需要排查并发                               | pass     |
| 谨慎在lambda表达式中使用引用捕获                                | pass     |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串               | pass     |
| map\vector\list\set等stl模板类使用时需要排查并发                | pass     |
| 谨慎考虑加锁范围                                               | pass     |
| while循环谨慎考虑循环条件,避免死循环                            | pass     |
| 在IPC通信中谨慎使用同步通信方式                                 | pass     |
| 禁止传递this指针至其它模块或线程(特别是eventhandler任务)        | pass     |
| 禁止将外部传入的裸指针在内部直接构造智能指针                      | pass     |
| 禁止多个独立创建的智能指针管理同一地址                           | pass     |
| 禁止在析构函数中抛异步任务                                      | pass     |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁             | pass     |
| 禁止在对外接口中未经判空直接使用外部传入的指针                    | pass     |
| 禁止接口返回局部变量引用                                        | pass     |
| 禁止在信号函数中加锁                                            | pass     |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作           | pass     |
| 禁止将同一个cpp编译在不同的so中                                 | pass     |
| 谨慎在lambda表达式中捕获FrameNode的强指针(RefPtr)避免循环引用导致内存泄漏       | pass     |
| 禁止在PostTask时捕获祼指针或引用,避免发生use-after-free导致crash       | 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**:

**XTS Result**:

### 是否已执行L0用例
- [ ] 已验证
- [ ] 不涉及。如不涉及,请写明理由


See merge request: openharmony/ability_form_fwk!3761
2026-08-04 11:26:00 +08:00
yzy-15 60a15d908a fix: add input validation and null checks for security hardening
- ets_form_observer: validate callback/filter params are not undefined
- js_live_form_extension: check moduleName is not empty before CreateModuleContext
- form_supply_stub: validate FormState value range in HandleOnAcquireStateResult
- template_form_detail_info: validate each field read from parcel in ReadFromParcel
- theme_manager_service_param: validate reads and enum ranges in Unmarshall
- form_report: reject invalid formId (<=0) before statistics handling
- form_record_report: check GetFormRecord return value before use
- theme_form_client: validate themeFormDimension/themeFormLocation ranges
- form_host_callback: validate formId and callerToken in OnAcquired

AI[99%] Human Fixed[0%] Human[1%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>

Change-Id: I9f58bdc0aa0f433477f57f1eafc4ba41af62a99a
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com>
2026-08-03 16:42:56 +08:00
AspTATA 3f3ef86e4d fix: HandleSetBackgroundFunction补充funcName/params空值校验,符合IPC输入验证规范
Signed-off-by: AspTATA <xionglinhong1@huawei.com>
2026-08-03 16:39:51 +08:00
AspTATA e0f7fb44a8 fix: 评审意见修复:补全Stub handler、收紧校验阈值、补全锁与日志
- 补全SetBackgroundFunction的Stub case与Handle函数(form_mgr_stub.cpp/.h)
- SetBundleManager补ibundleMutex_锁,消除与GetBundleMgr锁内读写的数据竞争
- FormSupplyCallback单例改回锁方案,恢复new失败后的重试能力
- MAX_LAYOUT_SCALE从1000.0f收紧至100.0f并提取为具名常量
- GetFilesSize溢出时补filesSize.emplace_back保持长度对应,日志补充说明
- 溢出日志与枚举定义补充density输出与401错误码注释

Signed-off-by: AspTATA <xionglinhong1@huawei.com>
2026-08-03 10:56:53 +08:00
AspTATA 95d41d93be fix: 修复form_fwk空指针、并发竞争、IPC鉴权及整数溢出等安全问题
- FFI入口新增空指针检查,new(nothrow)返回值判空
- 修复GetBundleMgr与FormSupplyCallback单例DCLP竞争(改call_once)
- SetBackgroundFunction补写InterfaceToken并改用标准SendTransactCmd
- FormHostProxy写token失败后补return,不再继续发送
- GetStringInfo读取失败返回ERR_COMMON_CODE,避免false误判为成功
- SetUIExtCustomDensity新增上界校验与浮点乘法溢出预判
- GetFilesSize累加与LINEAR重试延迟乘法新增整数溢出预判
- Dump入口集中校验系统应用权限

Signed-off-by: AspTATA <xionglinhong1@huawei.com>
2026-07-31 17:08:21 +08:00
zhangsaiyang1 2674425d70 内存安全、类型混淆问题处理
Co-Authored-By: Agent

Signed-off-by: zhangsaiyang1 <zhangsaiyang1@h-partners.com>
2026-07-31 16:01:44 +08:00
openharmony_ci 2c87d4d667 !3731 merge master_publish_form into master
RequestPublishForm流程优化:前置数量校验+NOT_SUPPORT错误码+入参精简+接口合并

Created-by: xiangcong3
Commit-by: xiangcong3
Merged-by: openharmony_ci
Description: ## 关联 Issue #3050

### 变更内容

本PR包含7个commit,涵盖 RequestPublishForm 流程的前置数量校验、NOT_SUPPORT错误码基础设施、外部错误码独立化、入参精简、接口合并、代码重构:

#### Commit 1: `48e92cb71` feat: 前置数量校验+NOT_SUPPORT错误码+map映射重构
- 新增 `CheckFormCountLimit` 前置校验,在 formId 生成前检查 Host 侧卡片数量是否超限
- `AddFormResultErrorCodes` 枚举新增 `NOT_SUPPORT=5`
- `PublishFormErrorCode` 枚举新增 `NOT_SUPPORT`
- NAPI 导出 + range check 上界更新
- `SetPublishFormResult`/`AcquireAddFormResult` if-else → map 重构(匿名命名空间 ACQUIRE_RESULT_MAP / PUBLISH_RESULT_MAP)
- `CheckAddFormTaskTimeoutOrFailed` 快筛增加 NOT_SUPPORT 条件

#### Commit 2: `da26b5810` refactor: 精简RequestPublishForm/WithSnapshot拆分后的入参
- `RequestPublishForm` 7参→5参(移除 `needCheckFormPermission`)
- Facade/Adapter 层签名同步更新

#### Commit 3: `c599fc261` Merge RequestPublishFormToHost single-arg into two-arg overload
- 删除 `RequestPublishFormToHost(Want)` 和 `QueryPublishFormToHost(Want)` 1参数版
- 统一为2参数版 `(Want, userId)`
- 删除6个重复测试用例
- 更新所有 fuzzer 调用点

#### Commit 4: `14116ab89` Externalize PUBLISH_NO_SPACE and PUBLISH_NOT_SUPPORT error codes
- `form_mgr_errors.h` 新增 `ERR_FORM_EXTERNAL_PUBLISH_NO_SPACE (16501017)` 和 `ERR_FORM_EXTERNAL_PUBLISH_NOT_SUPPORT (16501018)`
- `form_errors.cpp` PUBLISH_NO_SPACE/NOT_SUPPORT 映射独立化,消息移至 EXTERNAL_ERR_RELATED_MSG

#### Commit 5: `746f0fe7d` Refactor AcquireAddFormResult: extract ResolveAcquireResult
- 提取 condition_variable lambda 逻辑为独立 `ResolveAcquireResult` 方法
- 嵌套深度从 7 降至 3,行为不变

#### Commit 6: `27c480304` Fix ResolveAcquireResult unknown state handling and code style issues
- `ResolveAcquireResult` 未知状态 `return false`(继续等待)而非 `return true`
- NOT_SUPPORT message 补充句号
- `#include <unordered_map>` 移至标准库位置
- WithSnapshot COMMON_CODE 映射注释规范

#### Commit 7: `1c7214dbe` fix: restore formDataProxies parameter to FormMgr::RequestPublishFormWithSnapshot
- 恢复 kits 层 `FormMgr::RequestPublishFormWithSnapshot` 的 `formDataProxies` 第5参数(默认值 `{}`)
- 避免跨仓修改 ace_engine(仍传5参数)
- IPC 层保持4参数(与上游一致,formDataProxies 在 kits 层丢弃不传 IPC)

### 涉及文件(19个)

| 文件 | 变更类型 |
|------|----------|
| `@ohos.app.form.formInfo.ets` | NOT_SUPPORT 枚举导出 |
| `js_form_host.cpp` | range check 上界更新 |
| `js_form_info.cpp` | NAPI 导出 NOT_SUPPORT |
| `form_constants.h` | PublishFormErrorCode 新增 NOT_SUPPORT |
| `form_mgr_errors.h` | 新增错误码 + 外部码 |
| `form_errors.cpp` | 外部码映射独立化 |
| `form_common_adapter.h` | AddFormResultErrorCodes 新增 NOT_SUPPORT |
| `form_mgr_adapter_facade.h` | 入参精简 + 1参数版删除 + WithSnapshot声明 |
| `form_publish_adapter.h` | 入参精简 + 1参数版删除 + 新增方法声明 |
| `form_mgr_adapter_facade.cpp` | 入参精简 + 1参数版删除 + WithSnapshot转发 |
| `form_mgr_service.cpp` | WithSnapshot 调用改专用方法 |
| `form_publish_adapter.cpp` | 核心变更:map重构 + 前置校验 + WithSnapshot实现 + ResolveAcquireResult |
| 3个 fuzzer 文件 | 签名适配 |
| `stub_form_publish_adapter.cpp` | 1参数版 stub 删除 |
| `mock_form_bms_helper.cpp` | mock 适配 |
| `mock_form_mgr_adapter_facade.cpp` | mock 适配 |
| `fms_form_publish_adapter_test.cpp` | 删除6个重复用例 + 合并注释 |

### 编译验证
-  业务编译 `hb build form_fwk -p rk3568 -i` 通过
-  测试编译 `hb build form_fwk -p rk3568 -t` 通过

### V9 基线一致性检查
- 基线:`gitcode/master` merge base `3425db0be`
- 19个文件全部检查通过,无冗余偏离
- kits层和IPC层与基线零偏离

Closes #3050

See merge request: openharmony/ability_form_fwk!3731
2026-07-30 19:42:30 +08:00
yzy-15 2e95808859 fix: harden JSON parsing safety and input validation in form_fwk
- Replace nlohmann::json::parse with SafeJsonParse across 10+ files
- Add type/size/object validation in form_provider_data and form_binding_data
- Add DB corruption recovery in form_info_mgr (remove corrupted entries on InitFromJson failure)
- Add JSON validity check before DB writes in form_info_rdb_storage_mgr
- Buffer file content before parsing in form_module_checker
- Move jsonFormProviderData_ member to private scope

🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (glm-5.2) <ai@local>

Change-Id: I6d892b05b77c1453d748a2b8b54bbe9b65ce619e
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com>
2026-07-29 16:05:59 +08:00
xiangcong3 8480a4ebdc fix: restore formDataProxies param and refine RequestPublishForm error handling
1. Restore formDataProxies (5th param, default={}) to FormMgr client
   (form_mgr.h/cpp) to avoid cross-repo changes to ace_engine.
   IPC layer remains 4-param (upstream original design).

2. Move COMMON_CODE mapping from Adapter to Service layer:
   - RequestPublishFormWithSnapshot in Adapter returns specific error codes
   - Service layer maps NO_SPACE/NOT_SUPPORT to COMMON_CODE for public API
     compatibility (FormMenuItem only expects COMMON_CODE)

3. Refine error path in RequestPublishForm/WithSnapshot/CrossUser:
   - Add RemoveFormIdMapElement on RequestPublishFormToHost failure
   - Add early return errCode on failure (skip formDataProxies/post logic)
   - Remove IncreaseAddFormRequestTimeOutTask from error paths (redundant:
     RequestPublishFormToHost already waits AcquireAddFormResult synchronously)
   - Keep IncreaseAddFormRequestTimeOutTask on success paths (AddForm flow
     depends on it for timeout protection)

4. ResolveAcquireResult unknown state: return true with COMMON_CODE
   instead of return false (continue waiting), avoid potential deadlock
   when state not in ACQUIRE_RESULT_MAP

5. Fix comment indentation for @param formId (5-space -> 4-space)

Signed-off-by: xiangcong3 <xiangcong4@huawei.com>

AI[45%] Human Fixed[0%] Human[55%] AI Adopted[100%]
2026-07-28 15:02:55 +08:00
yzy-15 206b948ec7 feat: pass isSystemApp flag through Want to FRS for form vsync gating
Add FORM_IS_SYSTEM_APP_KEY constant and pass isSystemApp from
bundleInfo to FRS via Want in FillBundleInfo. In FormRenderRecord
CreateContext and GetContext, read isSystemApp from Want and set
on applicationInfo so that ace_engine can query per-card system
app status for vsync interception policy.

🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (glm-5.1) <ai@local>

Change-Id: Ia1cb2b612ca79232310978be515221800fa2c758
Signed-off-by: yzy-15 <yuzhiyong6@h-partners.com>
2026-07-27 15:22:10 +08:00
xiangcong3 27c4803042 Fix ResolveAcquireResult unknown state handling and code style issues
- ResolveAcquireResult: return false for unknown state (continue
  waiting) instead of return true (immediate exit)
- form_errors.cpp: add missing period to NOT_SUPPORT message
- form_publish_adapter.cpp: move <unordered_map> include to
  standard library position
- WithSnapshot: clarify COMMON_CODE mapping comment for API
  compatibility

Signed-off-by: xiangcong3 <xiangcong4@huawei.com>

AI[86%] Human Fixed[0%] Human[14%] AI Adopted[100%]
Co-authored-by: opencode (glm-5.1) <ai@local>
2026-07-27 14:08:30 +08:00
xiangcong3 14116ab899 Externalize PUBLISH_NO_SPACE and PUBLISH_NOT_SUPPORT error codes
- form_mgr_errors.h: Add ERR_FORM_EXTERNAL_PUBLISH_NO_SPACE (16501017)
  and ERR_FORM_EXTERNAL_PUBLISH_NOT_SUPPORT (16501018)
- form_errors.cpp: Change PUBLISH_NO_SPACE mapping from
  ERR_FORM_EXTERNAL_FUNCTIONAL_ERROR to ERR_FORM_EXTERNAL_PUBLISH_NO_SPACE
- form_errors.cpp: Change PUBLISH_NOT_SUPPORT mapping from
  ERR_FORM_EXTERNAL_FUNCTIONAL_ERROR to ERR_FORM_EXTERNAL_PUBLISH_NOT_SUPPORT
- form_errors.cpp: Remove inline messages from mapping entries,
  move to EXTERNAL_ERR_RELATED_MSG for 16501017/16501018

Signed-off-by: xiangcong3 <xiangcong4@huawei.com>

🤖 AI[17%] 🔧 Human Fixed[0%] 🧑 Human[83%] 👌 AI Adopted[100%]
2026-07-27 11:45:42 +08:00
xiangcong3 da26b5810c refactor: 精简RequestPublishForm/WithSnapshot拆分后的入参
拆分后两个方法语义独立,入参精简到各自路径实际需要的参数:
- RequestPublishForm: 移除needCheckFormPermission(硬编码true,始终做完整校验)
- RequestPublishFormWithSnapshot: 移除formDataProxies(IPC不传、调用点不用)

Facade/Adapter层: 7参→5参 / 6参→4参
FormMgr客户端层: 5参→4参
同步更新stub/mock/fuzzer签名

Signed-off-by: xiangcong3 <xiangcong4@huawei.com>

🤖 AI[100%] 🔧 Human Fixed[0%] 🧑 Human[0%] 👌 AI Adopted[100%]
Co-authored-by: opencode (glm-5.1) <ai@local>
2026-07-27 11:44:55 +08:00
xiangcong3 48e92cb717 feat: 前置数量校验+NOT_SUPPORT错误码+map映射重构
新增前置校验CheckFormCountLimit,RequestPublishForm/CrossUser入口
在formId生成前检查Host侧卡片数量是否超限,避免无用IPC。
Host数量超限直接返回CheckEnoughForm MAX系列原始码(不做转换)。

NOT_SUPPORT错误码基础设施:
- AddFormResultErrorCodes枚举新增NOT_SUPPORT=5
- PublishFormErrorCode枚举新增NOT_SUPPORT
- ERR_APPEXECFWK_FORM_PUBLISH_NOT_SUPPORT错误码+映射
- NAPI导出+SDK声明+range check上界更新

SetPublishFormResult/AcquireAddFormResult if-else→map重构:
- 匿名命名空间ACQUIRE_RESULT_MAP/PUBLISH_RESULT_MAP
- NOT_SUPPORT作为新增map条目,新增枚举值只需增加条目

CheckAddFormTaskTimeoutOrFailed快筛增加NOT_SUPPORT条件

Signed-off-by: xiangcong3 <xiangcong4@huawei.com>

🤖 AI[99%] 🔧 Human Fixed[1%] 🧑 Human[0%] 👌 AI Adopted[59%]
Co-authored-by: opencode (glm-5.1) <ai@local>
Co-authored-by: opencode (qwen3.7-max) <ai@local>
2026-07-27 11:44:50 +08:00
allenlee6 34910ade8e Merge branch 'master' of git@gitcode.com:allenlee6/ability_form_fwk_7251.git into 'master'
# Conflicts:
#   conflict services/src/form_mgr/form_data_adapter.cpp
2026-07-23 16:11:47 +08:00
openharmony_ci 4d4ca6eb2a !3722 merge master into master
fix: 日志脱敏处理

Created-by: gcw_jtkehB7L
Commit-by: wanrenjie;gcw_jtkehB7L
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!3722
2026-07-23 11:18:21 +08:00
wanrenjie 640ec194d6 Revert "refactor: 优化文件路径脱敏,避免字符串拷贝"
This reverts commit 85435e97b4.

Signed-off-by: wanrenjie <wanrenjie1@huawei.com>
Change-Id: I9f8c7e0374dbbbef8d829718134c781006a4ffd5
2026-07-22 10:12:15 +08:00
allenlee6 95a0c21d76 update: 更新文件 form_mgr.h
Signed-off-by: allenlee6 <lishengyang5@huawei.com>
2026-07-21 23:18:04 +08:00
allenlee6 4a067fb7c9 update: 更新文件 form_mgr_stub.cpp
Signed-off-by: allenlee6 <lishengyang5@huawei.com>
2026-07-21 23:17:31 +08:00
allenlee6 a3de5df024 update: 更新文件 form_mgr_stub.cpp
Signed-off-by: allenlee6 <lishengyang5@huawei.com>
2026-07-21 23:16:38 +08:00
allenlee6 e5fdaaabad update: 更新文件 form_mgr_proxy.cpp
Signed-off-by: allenlee6 <lishengyang5@huawei.com>
2026-07-21 23:15:50 +08:00
allenlee6 4b9d0936c4 update: 更新文件 form_mgr_proxy.h
Signed-off-by: allenlee6 <lishengyang5@huawei.com>
2026-07-21 23:14:26 +08:00
wanrenjie 85435e97b4 refactor: 优化文件路径脱敏,避免字符串拷贝
Signed-off-by: wanrenjie <wanrenjie1@huawei.com>
Change-Id: I70a380eb961a86cd49025863866ccdc65b1357a4
2026-07-21 16:37:01 +08:00
wanrenjie ed4570fc85 refactor: 优化代码格式
Signed-off-by: wanrenjie <wanrenjie1@huawei.com>
Change-Id: Ia50cd125199b244f8353a9383e453f2df6428b52
2026-07-20 10:37:50 +08:00
allenlee6 3457333e26 Merge branch 'master' of git@gitcode.com:allenlee6/ability_form_fwk_7251.git into 'master'
Co-Authored-By: Agent
Signed-off-by: allenlee6 <lishengyang5@huawei.com>
2026-07-18 20:23:56 +08:00
allenlee6 2a9d2905a3 feat(form_fwk): add updateFormCrossBundle API and full-layer TDD coverage
新增 formAgent.updateFormCrossBundle 系统 API(@systemapi,@permission
ohos.permission.UPDATE_FORM_CROSS_BUNDLE),允许系统应用跨 bundle 刷新卡片。

Inner API / Kit / Service / Adapter / NAPI 全链路实现:
- 新增 IPC 消息 FORM_MGR_UPDATE_FORM_CROSS_BUNDLE 及对应 Proxy/Stub
- 新增 IFormMgr::UpdateFormCrossBundle 虚函数(默认实现 ERR_OK)
- 新增 FormMgrService 权限/系统应用/跨本地账户校验
- 新增 FormMgrAdapterFacade 包一层错误码映射
- 新增 FormMgr Kit 接口(含 IN_RECOVERING / Connect / proxy null 防御)
- 新增 JsFormAgent NAPI 入口(Promise 形态,含 handle scope)
- 新增专用错误码 ERR_APPEXECFWK_FORM_PERMISSION_DENY_UPDATE_FORM_CROSS_BUNDLE (2293857)
  用于在 201 映射中精准指向 UPDATE_FORM_CROSS_BUNDLE 权限名

测试覆盖(按方案文档 §7 完整对齐):
- Service 测试 8 个用例(fms_form_mgr_service_test)
- Kit 测试 6 个用例(fms_form_mgr_update_form_test)覆盖 IN_RECOVERING / formId<=0 /
  formBindingData 空 / Connect 失败 / remoteProxy_ null / 端到端透传
- Proxy 测试 3 个用例(form_mgr_proxy_test)
- Stub 测试 2 个用例(form_mgr_stub_test)
- 新增 NAPI 测试目录 form_agent_napi_test(4 个契约面用例 + BUILD.gn)
- Fuzz 测试扩展 formmgrstubtwo_fuzzer(MESSAGE_LAST=3091 覆盖新消息码)
- Mock 支撑:mock_form_mgr_service.h 新增 UpdateFormCrossBundle 桩

Co-Authored-By: Agent
Signed-off-by: allenlee6 <lishengyang5@huawei.com>
2026-07-18 20:07:02 +08:00