C/C++编程安全标准GJB-8114解读——循环控制类

CMA软件评测实验室在建立软件测试体系或申请相关资质时,需要依据相关标准,使用有效的方法开展检验检测活动,GJB-8114是一部嵌入式软件安全测试相关的国家标准,本系列文章我们就针对GJB-8114《C/C++语言编程安全子集》的具体内容进行分析解读。前面已经为大家介绍了声明定义类、版面书写类、指针使用类、分支控制类、函数调用类、运算处理类和语句实用类,今天继续为您介绍循环控制类。

R-1-9-1
for循环控制变量必须使用局部变量


当然我们现在很少有人这样写,一个for循环用全局变量来做控制变量。但是根据我们的测试经验,有一些搞硬件的人写软件,他们比较喜欢用全局变量作为for循环的控制变量。

R-1-9-2
for循环控制变量必须使用整数型变量


在咱们的C语言书上,有一个例子,它的控制变量就是用的浮点数,这本书在这一点上是有些问题的,一定要用一个整数。

R-1-9-3
禁止在for循环体内部修改循环控制变量


像违背示例中展示的,这个i在循环体中修改了,这个是大家经常犯的一个错误,也就是说我们做了一个for循环,然后为了跳出这个for循环,当执行某些东西以后,直接就把这个循环控制变量就给赋值成不满足条件的值,好多人都犯过这样的错误。在这种情况下应该用break来代替的。

再看违背示例中,控制变量不止一个i,同时还有一个flag,尽管这个flag在这里面好像是没有什么意义,但是(i<15)&&flag告诉你是要满足这两个条件,所以这里flag被修改了,也是不可以的。

但是为了达到我们想要的效果,建议大家使用while循环。

R-1-9-4
无限循环必须使用while(1)语句,禁止使用for(;;)等其他形式的语句


违背示例中的两种情况在测试中我们都碰到过,一般的情况下也很少认为它们有问题,但是现在GJB-8114对它做了一个统一规定,凡是这种无限循环必须使用while(1)这种结构,不能用违背示例中的结构了。

以上就是针对GJB-8114《C/C++语言编程安全子集》标准中,循环控制类的相关要求,后面会继续为大家介绍后面的规则,欢迎大家继续关注。

本系列内容整理自优品软件培育计划百场前沿技术系列讲座直播第16期,中国航天科技集团公司软件评测中心研究员李国良为大家带来的《白盒测试——C/C++编程规范》专题讲座,他曾参与过多个大型航空、航天、军工、电子型号项目的测试任务,如需直播回放视频也可私信我获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值