Questions tagged «strncpy»

10
为什么要使用strncpy而不是strcpy?
编辑:我已经为示例添加了源。 我遇到了这个例子: char source[MAX] = "123456789"; char source1[MAX] = "123456789"; char destination[MAX] = "abcdefg"; char destination1[MAX] = "abcdefg"; char *return_string; int index = 5; /* This is how strcpy works */ printf("destination is originally = '%s'\n", destination); return_string = strcpy(destination, source); printf("after strcpy, dest becomes '%s'\n\n", destination); /* This is …

7
为什么strlcpy和strlcat不安全?
据我所知,strlcpy和strlcat被设计为安全的替代品strncpy和strncat。但是,有些人仍然认为他们没有安全感,只会引起另一种类型的问题。 有人可以举一个使用strlcpy或strlcat(即始终为null的函数终止其字符串)如何导致安全问题的示例吗? 乌尔里希·德雷珀(Ulrich Drepper)和詹姆斯·安提尔(James Antill)指出,这是事实,但从未提供示例或阐明这一点。
80 c  security  strncpy  strlcpy 

11
为什么strncpy不为null终止?
strncpy()据说可以防止缓冲区溢出。但是,如果它防止了不带null终止的溢出,则很可能随后的字符串操作都会溢出。因此,为了防止这种情况,我发现自己正在做: strncpy( dest, src, LEN ); dest[LEN - 1] = '\0'; man strncpy 给出: 该strncpy()功能类似,但所复制的n字节数不超过个字节src。因此,如果存在第一间没有空字节n的字节src,则结果将不会被空终止。 在没有null终止的情况下,看起来像是无辜的事情如下: printf( "FOO: %s\n", dest ); ...可能会崩溃。 是否有更好,更安全的替代方法strncpy()?
76 c  strncpy 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.