背景:与某企业的合作项目,codereview中出现的不安全函数strcpy和sprintf整改问题。
整改方案如下:1
2
3
4
5
6
7
8
9//Noncompliant Code Example
sprintf(str, "%s", message); // Noncompliant
strcpy(str, message); // Noncompliant
//Compliant Solution
snprintf(str, sizeof(str), "%s", message);
strlcpy(str, message, sizeof(str));
strncpy(str, message, sizeof(str) -1); // Leave room for null
str[sizeof(str) - 1] = '\0'; // Make sure the string is null-terminated
在4个c文件中,一共有1千多处需要整改,工作量巨大,故写了个python脚本帮助替换,立刻就搞定了
1 | import os |