如何改进flawfinder memset警告的代码



在我的代码中,使用flawfinder工具,对memset的所有调用都显示为警告。

在最简单的情况下,它可以归结为

float f1;
float f2;
void* p1 = &f1;
void* p2 = &f2;
memcpy(p1, p2, sizeof(float));

消息是

./file.cpp:10:  [2] (buffer) memcpy:
Does not check for buffer overflows when copying to destination (CWE-120).
Make sure destination can always hold the source data.

我完全理解这可以用一个简单的副本来代替,这只是一个简化的例子。我还了解使用memcpy和缓冲区溢出的潜在问题。

问题是flawfinder到底要我在这里做什么

也许是添加assert之类的东西?(这并没有抑制警告(

assert( sizeof(*p1) == sizeof(*p2) );
memcpy(p1, p2, sizeof(float));

还是它只是告诉我不要使用memset

我是用C++编程的,但我很确定这个问题和解决方案对C和C++语言都是通用的。

errno_t  err = memcpy_s(dest, dsize, src, cnt);

这应该是"安全"的版本,有望满足flawfinder

相关内容

  • 没有找到相关文章

最新更新