Sun Studio 12:C 用户指南

4.3.13 -errsecurity=v

可使用 -errsecurity 选项检查代码中的安全漏洞。

v 必须是下列值之一:

表 4–5 -errsecurity 标志

值 

含义 

core 

此级别检查的源代码构造几乎始终是不安全或难以验证的。此级别的检查包括: 

  • 将可变格式字符串与 printf()scanf() 系列函数一起使用

  • scanf() 函数中使用无限制字符串 (%s) 格式

  • 使用无安全用法的函数: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