软件测试实验室在申请CMA测试认证时,需要根据相应的标准确定检测方法。GJB-8114是一部嵌入式软件安全测试相关的国家标准,本系列文章我们针对GJB-8114《C/C++语言编程安全子集》的具体内容进行解读。GJB-8114标准规则中一共有124条强制性规则, 是按类分的,一共有13类,声明定义类、版面书写类、指针使用类、分支控制类、跳转控制类、运算处理类、函数调用类、语句使用类、循环控制类、类型转换类、初始化类、比较判断类以及名称、符号与变量使用类、今天我们针对初始化类进行解读。
R-1-11-1
变量禁止未赋值就使用
这个是说变量在使用之前必须给它赋初值,这个尽管在有操作系统的计算机或者处理器中往往一装这个程序的时候实际上就已经把这些变量给初始化了,但是这样并不保险,所以必须要对它进行初始化。
R-1-11-2
变量初始化禁止隐含依赖于系统的缺省值
变量初始化禁止隐含依赖于系统的缺省值,通常在大多数的系统中,都会把它初始化成0,但是有一部分有可能把它初始化成了-1,所以不要侥幸。
R-1-11-3
结构体初始化的嵌套结构必须与定义一致
像违背示例中展示的,我们做了一个声明,这里面有一个变量,这个变量里面又包含了一个结构,结构里面有两个变量,一共有3个变量,最后这里没有符合结构,应该用}括上就对了。
R-1-11-4
枚举元素定义的初始化必须完整
咱们在做一个枚举类型的时候,往往枚举有一个规定,都不给它初始化,它实际是正确的。但是你不能第一个没初始化,从第二个开始初始化,这就不对了。你要是不想全部初始化,要保证第一个初始化。也就是说在任意一个初始化的元素之前,不能含有没被初始化的元素。
后面会继续为大家介绍GJB-8114标准的其他要求,敬请继续关注。