新的C++安全编码规则出炉
2023-09-14 09:10:46 时间
新的安全编码规则
在Visual Studio v16.8 Preview 3中,我们添加了一些新的安全编码规则,来帮助开发者更容易找到一些更加容易导致Bug的编码错误,这些错误涵盖了从简单的功能缺失到严重的安全漏洞问题。
这些规则都是来自于真实世界的产品缺陷报告,在微软,我们会在我们的每一款产品中运行这些安全编码规则,以满足产品在安全和合规方面的需求。
在今天的文章中,我们会介绍VARIANT及其衍生的VARIANTARG和PROPVARIANT结构相关的编码规则。为了更加容易的使用这些规则,我们构建了一个名为VariantClear的代码分析扩展工具,这个扩展将会检测代码是否符合预期的编码规则。为什么叫这个扩展为VariantClear呢?因为它的主要目的就是为了检测那些误用VariantClear函数的代码。
VariantClear扩展将会检测出如下的代码警告:
> C33001: VARIANT ‘var’ 在它被反初始化时被重置。
> C33004: VARIANT ‘var’ 在它被初始化之前被重置,且它被标记为输出(Out)参数。
> C33005: VARIANT ‘var’ 被标记为输入或输入/输出参数,但是它没有被初始化。
VariantClear 规则
VARIANT是一个非常方便好用的结构体,可以使用它来对各种不同的数据类型进行数据交换。在任意时刻,它都可以被用来表示一个数据类型,或者空值。在这个结构体中有一个名为VARIANT::vt的成员,用来表示被封装的数据类型或者空值类型。
一个VARIANT结构必须被在使用或者传入到其他代码之前进行显式的初始化。否则,就会出现访问随机内存数据的问题&#x
相关文章
- C++虚析构函数的使用
- C++ <cstring>字符串库函数的自定义实现
- Qt-跨平台的C++图形用户界面应用程序框架(一)
- C++多个有序数组的交集
- python快速入门-有C++或java基础
- 用C设计,用C++编码
- c++ 中字符串编码 转码
- AI模型C++部署:ubuntu安装Cython并使用C/C++调用python动态库【附加c++与python互相调用算法demo程序接口的源码】
- C++:cin、cin.getline()、getline()的用法
- C++ popcount()含义(七十一)
- VC++使用zlib压缩及解压数据,使用base64编码及解码数据(附源码)
- C++程序安装包被病毒篡改导致启动报错
- 当C++遇上AUTOSAR编码规范,你的安全我来护航
- Google C++ 编码规范(中文版)
- 为什么C++函数形参默认值从最末一个赋值?
- 【opencv-c++】 关于opencv.hpp头文件
- PAT 1128 C++版