函数安全性总结

来源:互联网 发布:mysql 数据不重复 编辑:程序博客网 时间:2024/05/02 10:36

函数       严重性       解决方案
gets          最危险       使用fgets(buf,size,stdin)。这几乎总是一个大问题
strcpy     很危险          改为使用strncpy
strcat       很危险       改为使用strncat
sprintf       很危险       改为使用snpritf,或者使用精度说明符
scanf       很危险       改为使用精度说明符,或自己进行解析
sscanf       很危险       改为使用精度说明符,或自己进行解析
fscanf       很危险          改为使用精度说明符,或自己进行解析
vfscanf       很危险       改为使用精度说明符,或自己进行解析
vsprintf       很危险       改为使用vsnprintf,或者使用精度说明符
vscanf          很危险       改为使用精度说明符,或自己进行解析
vsscanf       很危险       改为使用精度说明符,或自己进行解析
streadd       很危险       确保分配的目的地参数大小是源参数大小的4倍
strecpy       很危险       确保分配的目的地参数大小是源参数大小的4倍
strtrns       危险             用手工检查来察看目的地大小是否至少与源字符串想等
realpath       很危险(或稍小,取决于实现)       分配缓冲区大小为MAXPATHLEN。同样,手工检查参数以确保输入参数不超过MAXPATHLEN
syslog 很危险 在将字符串输入传递给该函数之前(或稍小,取决于实现)将所有字符串输入截成合理的大小
getopt 很危险(或稍小,取决于实现) 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小
getopt_long 很危险(或稍小,取决于实现) 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小
getpass 很危险(或稍小,取决于实现) 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小
getchar 中等危险 如果在循环中使用该函数,却表检查缓冲区边界
fgetc 中等危险 如果在循环中使用该函数,却表检查缓冲区边界
getc 中等危险 如果在循环中使用该函数,却表检查缓冲区边界
read 中等危险 如果在循环中使用该函数,却表检查缓冲区边界
bcopy 低危险 确保缓冲区大小与它所说的一样大
fgets 低危险 确保缓冲区大小与它所说的一样大
memcpy 低危险 确保缓冲区大小与它所说的一样大
snprintf 低危险 确保缓冲区大小与它所说的一样大
strccpy 低危险 确保缓冲区大小与它所说的一样大
strcadd 低危险 确保缓冲区大小与它所说的一样大
strncpy 低危险 确保缓冲区大小与它所说的一样大
vsnprintf 低危险 确保缓冲区大小与它所说的一样大

原创粉丝点击