Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

4.3.13 -errsecurity=level

使用 -errsecurity 选项检查您的代码是否有安全漏洞。

level 必须为下表中显示的值之一。

表 4-5  -errsecurity 标志
level
含义
core
此级别检查的源代码构造几乎始终是不安全或难以验证的。此级别的检查包括:
  • 将变量格式字符串用于 printf()scanf() 系列函数

  • 将无限制的字符串 (%s) 格式用于 scanf() 函数

  • 不安全地使用函数:gets()cftime()ascftime()creat()

  • 错误地使用 open()O_CREAT

    将在此级别生成警告的源代码视为错误。应更改有问题的源代码。在所有情况下,都应采用更安全简单的代码。

standard
此级别检查包括 core 级别的所有检查,以及可能安全、但有更好的可用替代代码的构造的检查。检查新近编写的代码时建议采用此级别检查。此级别的其他检查包括:
  • 使用 strlcpy() 之外的字符串复制函数

  • 使用弱随机数函数

  • 使用不安全的函数生成临时文件

  • 使用 fopen() 创建文件

  • 使用调用 shell 的函数

    使用新的或经过大幅修改的代码替换在此级别生成警告的源代码。应权衡消除传统代码中的这些警告对应用程序造成的不稳定风险。

extended
此级别检查包含几乎所有检查,包括 core 级别和 standard 级别的所有检查。此外,还会生成许多有关在某些情况下可能不安全的构造的警告。此级别的检查可用作检查代码的辅助措施,但无需将这些检查用作判断源代码是否可接受的标准检查。此级别的其他检查包括:
  • 在循环中调用 getc()fgetc()

  • 使用易于产生路径名争用情况的函数

  • 使用 exec() 系列函数

  • stat() 和其他函数之间的争用情况

    检查在此级别生成警告的源代码,确定是否存在潜在安全问题。

%none
禁用 -errsecurity 检查

如果未指定 -errsecurity 的设置,lint 会将它设置为 -errsecurity=%none。如果指定 -errsecurity 但不指定参数,lint 会将其设置为 -errsecurity=standard