1

可能重复:
为什么 strncpy 不安全?

有哪些安全问题strncpy()

   function foo(char * param) {
   char local[100];
     /* do stuff */
   strncpy(local, param, strlen(param));
     /* do more stuff */
   }
4

1 回答 1

3

通常,最大长度(第 3 个)参数strncpy(3)是目标的大小,而不是源的大小。将传输限制为源的大小实际上没有任何意义,因为这是使用更危险的 plain 传输的最大值strcpy(3)

而且,要回答这个问题,问题在于这不是内存安全操作,因此攻击者可以提供比缓冲区更长的字符串,这会覆盖堆栈上的代码,并且如果精心安排,可以从攻击者。

于 2012-06-01T06:57:31.087 回答