CodeQL 文档

在条件中使用字符串复制函数

ID: cpp/string-copy-return-value-as-boolean
Kind: problem
Security severity: 
Severity: error
Precision: high
Tags:
   - correctness
Query suites:
   - cpp-security-and-quality.qls

点击查看 CodeQL 存储库中的查询

此查询标识在条件中使用的字符串复制函数调用,可以直接使用,也可以作为相等运算符或逻辑运算符的一部分使用。最常见的字符串复制函数始终返回其 目标 参数,并且没有保留返回值来指示错误。因此,此类函数调用在布尔上下文中始终计算为 true。

规则考虑的字符串复制函数有

  • strcpy

  • wcscpy

  • _mbscpy

  • strncpy

  • _strncpy_l

  • wcsncpy

  • _wcsncpy_l

  • _mbsncpy

  • _mbsncpy_l 注意:强烈建议考虑使用更安全的字符串操作函数版本,例如 strcpy_s

建议

检查以确保标记的表达式没有错别字。

如果打算进行字符串比较,请将函数更改为相应的字符串比较函数。

如果确实打算进行字符串复制,则很可能打算使用字符串复制函数的安全版本(例如 strcpy_s),而不是字符串复制函数的不安全版本。

示例

if(strcpy(szbuf1, "Manager") == 0) // most likely strcmp was intended instead of strcpy
{
	// ...
}

参考

  • ©2025GitHub 公司
  • 条款
  • 隐私