CWARN.MEMSET.SIZEOF.PTR
sizeof 应用于指针的 memset 类型函数
CWARN.MEMSET.SIZEOF.PTR 检查器会标记 sizeof 应用于指针而不是指向的对象的 memset 类型函数。
漏洞与风险
将错误的大小传递给 memset 函数后,相应调用将填充错误的字节数。这种情况可导致缓冲区溢出等威胁。
漏洞代码示例
复制
#include <memory.h>
struct S {
int x, y;
};
void zero_S(struct S *ps) {
memset(ps, 0, sizeof(ps));
}
在此示例中,Klocwork 标记了第 5 行,其中的 sizeof 应用于指针 ps。
修正代码示例
复制
#include <memory.h>
struct S {
int x, y;
};
void zero_S(struct S *ps) {
memset(ps, 0, sizeof(*ps));
memset(ps, 0, sizeof(struct S));
}
该修正代码示例在第 6 和 7 行中显示了两个实例,在其中输入了正确的代码。