我最近完成了一门C语言的大学课程,因此我缺乏经验。
一些大学倾向于教授他们的学生安全编程,或者至少一些元素。这里甚至有一个视频(来自这里)。
在C语言中,复制字符串需要使用strcpy或string.h函数。如何在日常编程中安全地使用它?您是否有一些处理分配以防止缓冲区溢出的函数?CERT安全编码标准为C提供了示例和合规解决方案:
一些大学倾向于教授他们的学生安全编程,或者至少一些元素。这里甚至有一个视频(来自这里)。
在C语言中,复制字符串需要使用strcpy或string.h函数。如何在日常编程中安全地使用它?您是否有一些处理分配以防止缓冲区溢出的函数?CERT安全编码标准为C提供了示例和合规解决方案:
int main(int argc, char *argv[]) {
/* ... */
char prog_name[128];
strcpy(prog_name, argv[0]);
/* ... */
}
他们的替代方案是:
int main(int argc, char *argv[]) {
/* ... */
char *prog_name = (char *)malloc(strlen(argv[0])+1);
if (prog_name != NULL) {
strcpy(prog_name, argv[0]);
}
else {
/* Couldn't get the memory - recover */
}
/* ... */
}
这里摘自第二个示例。
但据我了解,这只是更具挑战性、需要更多代码和更多工作。为什么没有人改变库本身呢?或者至少为什么没有人提供一个安全的替代库或函数,以正确处理这个问题呢?
谢谢阅读, wishi