华为C&C++语言安全编程规范HuaweiC&C++SecureCodingStandardV3
1华为技术有限公司版权所有侵权必究目录0前言目的适用范围攻击者思维安全编码基本思想外部数据定义术语定义1基础要求1
1变量规则1
1:指针变量、表示资源描述符的变量、BOOL变量声明必须赋予初值规则1
2:指向资源句柄或描述符的变量,在资源释放后立即赋予新值规则1
3:类的成员变量必须在构造函数中赋予初值规则1
4:严禁对指针变量进行sizeof操作建议1
1:尽量使用const建议1
2:全局变量的访问如果涉及多个线程,必须加锁建议1
3:同一个函数内,局部变量所占用的空间不要过大1
2断言(ASSERT)规则1
1:断言必须使用宏定义,禁止直接调用assert函数规则1
2:运行时可能会导致的错误,严禁使用断言规则1
3:严禁在断言内改变运行环境建议1
1:不要将多条语句放在同一个断言中1
3函数规则1
1:数组作为函数参数时,必须同时将其长度作为函数的参数规则1
2:严禁对公共接口API函数的参数进行ASSERT操作规则1
3:不对内容进行修改的指针型参数,定义为const建议1
1:谨慎使用不可重入函数建议1
2:字符串或指针作为函数参数时,请检查参数是否为NULL建议1
3:在函数的开始处对参数进行ASSERT操作(API除外)1
4循环规则1
1:循环必须有退出条件1
5异常机制规则1
1:禁用C++异常机制1
1:如果有构造函数,则必须有析构函数规则1
2:构造函数内不能做任何有可能失败的操作规则1
3:严禁在构造函数中创建线程规则1
4:严禁出现deletethis操作规则1
5:如果类的公共接口中返回类的私有数据地址,则必须加const类型建议1