此 strncpy 存在哪些安全问题



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

strncpy()有哪些安全问题:

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

通常,要strncpy(3)的最大长度 (3'rd) 参数是目标的大小,而不是源的大小。将传输限制在源的大小确实没有意义,因为这是使用更危险的普通strcpy(3)传输的最大值。

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

最新更新