🚀 航天软件C语言安全编码规范实战
30章 · 从入门到防御
🧑🚀
风格 · 安全编码
01
航天软件安全概述
特点 · 安全关键系统 · C语言风险
02
编码规范总则与MISRA-C简介
起源 · 航天采纳 · 核心原则
03
基本语法规则(一)
禁止动态内存 · 危险函数
04
基本语法规则(二)
大括号 · switch default
05
数据类型与声明
明确大小类型 · 禁止隐式转换
06
初始化规则
变量初始化 · 静态/全局零初始化
07
表达式与副作用
禁止赋值运算符 · 布尔操作数
08
控制流(一)
圈复杂度<10 · 禁止goto
09
控制流(二)
递归限制 · 单出口点
10
函数设计
参数≤4 · 禁止可变参数
11
指针使用规范(一)
禁止空指针解引用 · 有效性检查
12
指针使用规范(二)
限制指针运算 · 关系运算
13
数组与缓冲区
边界检查 · 禁止越界
14
字符串处理
安全函数 · 空字符结尾
15
预处理与宏
enum/const · 宏括号包裹
16
头文件管理
防卫式声明 · 避免多余头文件
17
断言与错误处理
assert · 错误码检查
18
并发与中断安全
原子操作 · volatile · 临界区
19
代码注释与文档
解释“为什么” · 同步更新
20
代码审查清单
MISRA-C要点 · 违规模式
21
静态分析工具应用
PC-Lint/QAC · 解读报告
22
单元测试与覆盖率
MC/DC覆盖 · CUnit框架
23
编译选项与警告
-Wall -Wextra · -Werror
24
安全编码与RTOS
任务栈计算 · 优先级反转
25
通信协议编码安全
CRC/Checksum · 序列化安全
26
看门狗与故障恢复
硬件看门狗 · 故障检测恢复
27
案例研究(一)
阿里安5 · 整数溢出
28
案例研究(二)
火星气候探测者 · 单位混淆
29
案例研究(三)
波音737 MAX · MCAS缺陷
30
课程总结与最佳实践
安全文化 · 规范更新 · 组织标准
⭐ 安全编码小卫士
🧪 每章对应独立文件