mirror of
https://gitee.com/openharmony/ability_dmsfwk
synced 2024-11-22 22:09:58 +00:00
add template
Signed-off-by: Bobie <zhouchuanbo2@huawei.com>
This commit is contained in:
parent
d5d1f83ff4
commit
1f7b5bb2e1
@ -3,32 +3,31 @@
|
||||
**描述**:
|
||||
|
||||
**安全及低级编码自检:**
|
||||
| 自检项 | 自检结果 |
|
||||
| ------------------------------------------------------------------------------- | -------- |
|
||||
| 变量使用前保证赋有效初值 | |
|
||||
| 结构体预留字段也必须初始化为0,不允许出现随机值 | |
|
||||
| 指针变量必须显示初始化为空 | |
|
||||
| 涉及内存拷贝时合理校验目标内存大小,保证目标内存大于等于源内存 | |
|
||||
| 进行字符串操作时,如字符串复制、申请字符串内存等,需要考虑字符串结束符 | |
|
||||
| cJSON指针在异常分支里均需考虑内存释放(cJSON_free/cJSON_Delete),防止内存泄漏 | |
|
||||
| 内存资源、文件句柄、管道资源、Socket句柄异常退出时要及时关闭 | |
|
||||
| malloc申请内存后必须判断是否为空 | |
|
||||
| 指针解引用或释放前判空(lamda表达式,异步任务等使用指针前需判空) | |
|
||||
| 内存释放后立即置空,防止出现UAF | |
|
||||
| 循环时容器的增、删、改操作,必须保证迭代器有效 | |
|
||||
| 禁止将栈内存地址作为返回值或赋值给全局变量 | |
|
||||
| 加法、乘法、减法操作,必须进行溢出和翻转保护,确保先校验再运算 | |
|
||||
| 除法、求余操作必须进行除零保护 | |
|
||||
| 循环变量用整型,禁止使用浮点型 | |
|
||||
| 循环退出条件一定确保可达,防止出现死循环等问题 | |
|
||||
| 不同大小结构体禁止强转 | |
|
||||
| 禁止使用非安全函数,使用封装好的安全函数 | |
|
||||
| 日志必须检查PassWord/位置信息/networkId/devId/uuid/udid等关键字,避免明文打印敏感信息 | |
|
||||
| 对函数入参坚持先校验后使用的原则(指针判空、整型变量校验范围) | |
|
||||
| 跨进程调用需注意权限校验,对外部传入的PID、tokenID进行权限校验 | |
|
||||
| 共享数据均需加锁保护,并且锁配对使用 | |
|
||||
| 条件变量正确加锁,消除条件变量唤醒丢失等问题 | |
|
||||
| 加锁范围确保合理,避免过大或过小导致死锁问题 | |
|
||||
|
||||
- [ ] 【变量初始化】变量使用前保证赋有效初值
|
||||
- [ ] 【变量初始化】结构体预留字段也必须初始化为0,不允许出现随机值
|
||||
- [ ] 【变量初始化】指针变量必须显示初始化为空
|
||||
- [ ] 【内存和资源】涉及内存拷贝时合理校验目标内存大小,保证目标内存大于等于源内存
|
||||
- [ ] 【内存和资源】进行字符串操作时,如字符串复制、申请字符串内存等,需要考虑字符串结束符
|
||||
- [ ] 【内存和资源】cJSON指针在异常分支里均需考虑内存释放(cJSON_free/cJSON_Delete),防止内存泄漏
|
||||
- [ ] 【内存和资源】内存资源、文件句柄、管道资源、Socket句柄异常退出时要及时关闭
|
||||
- [ ] 【指针】malloc申请内存后必须判断是否为空
|
||||
- [ ] 【指针】指针解引用或释放前判空(lamda表达式,异步任务等使用指针前需判空)
|
||||
- [ ] 【指针】内存释放后立即置空,防止出现UAF
|
||||
- [ ] 【指针】循环时容器的增、删、改操作,必须保证迭代器有效
|
||||
- [ ] 【指针】禁止将栈内存地址作为返回值或赋值给全局变量
|
||||
- [ ] 【数值边界】加法、乘法、减法操作,必须进行溢出和翻转保护,确保先校验再运算
|
||||
- [ ] 【数值边界】除法、求余操作必须进行除零保护
|
||||
- [ ] 【数值边界】循环变量用整型,禁止使用浮点型
|
||||
- [ ] 【数值边界】循环退出条件一定确保可达,防止出现死循环等问题
|
||||
- [ ] 【数值边界】不同大小结构体禁止强转
|
||||
- [ ] 【安全隐私】禁止使用非安全函数,使用封装好的安全函数
|
||||
- [ ] 【安全隐私】日志必须检查PassWord/位置信息/networkId/devId/uuid/udid等关键字,避免明文打印敏感信息
|
||||
- [ ] 【入参及权限校验】对函数入参坚持先校验后使用的原则(指针判空、整型变量校验范围)
|
||||
- [ ] 【入参及权限校验】跨进程调用需注意权限校验,对外部传入的PID、tokenID进行权限校验
|
||||
- [ ] 【条件竞争】共享数据均需加锁保护,并且锁配对使用
|
||||
- [ ] 【条件竞争】条件变量正确加锁,消除条件变量唤醒丢失等问题
|
||||
- [ ] 【条件竞争】加锁范围确保合理,避免过大或过小导致死锁问题
|
||||
|
||||
**TDD结果**:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user