字符数组C++的Flawfinder(CWE-119!/CWE-120)



我有一个像一样定义的char数组

char buffer[100];

当我运行Flawfinder扫描命中率时,我得到的是:

(buffer) char:
Statically-sized arrays can be improperly restricted, leading to potential
overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
functions that limit length, or ensure that the size is larger than the
maximum possible length.

我知道我必须在需要时进行检查,以确保我的代码不会出现异常,但我们有什么办法解决这个问题吗(用其他方式定义一个char数组(,并使Flawfindr输出没有任何命中?

更新

以下是该功能的完整代码,以防对有帮助

std::string MyClass::randomGenerator(odb::nullable<int> maxLength) {

struct timeval tmnow;

struct tm *tm;

char buf[100];

gettimeofday(&tmnow, NULL);

tm = localtime(&tmnow.tv_sec);

strftime(buf, 100, "%m%d%H%M%S", tm);

string micro = std::to_string(((int)tmnow.tv_usec / 10000));

strlcat(buf, micro.c_str(), sizeof(buf));

std::stringstream stream;

stream << std::hex << stoll(buf);

std::string result(stream.str());

Utilities::find_and_replace(result, "0", "h");

Utilities::find_and_replace(result, "1", "k");

std::transform(result.begin(), result.end(),result.begin(), ::toupper);

if (maxLength) {

return result.substr(result.size() - maxLength.get(), result.size() - 1);

} else {

return result ;

}

}

Flawfinder确实是一个稍微有点美化的grep——它不是一个真正的静态分析工具,可以进行数据流分析,所以我一直对它的输出持谨慎态度!

真正应该编写此代码的方法是编写真正的C++代码,而不是使用C运行时函数来美化C,因为这些函数绝对会出现内存损坏问题。

相关内容

  • 没有找到相关文章

最新更新