静态代码扫描

Contents
规则解析
MISRA-C规则
- 规则分类:
- 强制性(Mandatory):必须遵守,无偏差。
- 必需(Required):需遵守,可提供偏差申请。
- 建议性(Advisory):最佳实践,不强制。
- 静态代码分析:要求使用工具检测并报告违反规则的代码。
- 初始化:避免类初始化的相互依赖。
- 返回值处理:方法返回值不可忽略,需进行正确处理。
CERT C 编码标准
- 涉及内存管理、线程安全、数据验证等问题。
进程生成
- 禁止使用会搜索文件系统或调用Shell的函数(如
system、popen)。 - 输入验证:对输入字符串进行白名单校验,移除转义字符。
模糊处理
- Java代码:所有Java应用和库必须使用模糊处理。
安全函数
- 安全替代:优先使用安全函数(如
strncpy、memcpy_s),避免危险函数(如strcpy)。 - 数据溢出防护:避免将大数值赋值给小数据类型的变量。
- 异常处理:捕获的异常需进行处理,不得省略。
敏感信息
- 保护敏感信息的编码实践需遵循指定标准。
加密
- 加密库(如OpenSSL)只能通过库函数调用。
- 禁止通过Shell或进程生成函数调用加密函数。
典型问题
- 未初始化变量: 某些模块(如
Fls_PBcfg.c)中可能存在未初始化变量导致的逻辑错误。 - 未处理返回值: 一些文件中未能正确检查函数返回值,可能引发未预料的异常。
- 内存安全问题: 涉及对缓冲区和指针的边界检查不充分。