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