可能重复:
Why is strncpy insecure?
strncpy()
有哪些安全问题:
function foo(char * param) {
char local[100];
/* do stuff */
strncpy(local, param, strlen(param));
/* do more stuff */
}
答案 0 :(得分:3)
通常,strncpy(3)
的最大长度(第3个)参数将是目标的大小,而不是源的大小。将转移限制为源的大小确实没有意义,因为这是使用更危险的普通strcpy(3)
传输的最大值。
并且,为了回答这个问题,问题是这不是memory-safe operation,因此攻击者可以提供比覆盖堆栈上的代码的缓冲区更长的字符串,如果仔细安排,可以执行来自攻击者的任意代码。