问题标签 [strlcpy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
65296 浏览

c - 为什么 strlcpy 和 strlcat 被认为是不安全的?

我理解这一点,strlcpy并且被设计为和strlcat的安全替代品。但是,有些人仍然认为他们不安全,并且只会导致不同类型的问题strncpystrncat

有人可以举例说明使用strlcpyor strlcat(即始终为null 终止其字符串的函数)如何导致安全问题吗?

Ulrich Drepper 和 James Antill 声明这是真的,但从未提供示例或澄清这一点。

0 投票
3 回答
564 浏览

c - 为什么 strlcat 和 strlcpy 是 unsigned int 而不是 void?

我不明白为什么我们必须返回一个unsigned intforstrlcatstrlcpy,为什么我们需要它?这不是该功能的目的。

感谢您的回复

0 投票
2 回答
891 浏览

c - 什么定义了 C 中的 strscpy?

来自 linux.conf.au 2019 的 Kees Cook 在 youtube 上的这段视频中,他提到strscpy这是首选,但通常会做用户想要的事情(更少NUL-padding)。但是,他没有说是什么定义了这个(规范或标题),

从视频中滑出,

strscpy 幻灯片

strscpy()我找不到man

0 投票
3 回答
1369 浏览

c - 为什么这种“strncpy”的实现有效?

经过多次试验和错误,一些外部帮助后,我必须为分配重写一个模仿 strncpy 行为的函数,这是最终代码:

它完美无缺,但我不明白这部分:

此时, i 的值应该是 (n - 1) 对吧?所以'\0' goes into dest[n-1]循环结束,因为i becomes equal to n然后函数结束。

我们留下了一个看起来像这样的字符串:

并打印为 : string copiednot copied part

我的问题是:

  • 当他们基本上做同样的事情时,为什么dest[n-1]='\0'或者dest[n]='\0'而不是那个while循环,string copied而不是'字符串复制而不复制部分'返回?

  • 为什么\0在 while 循环之后打印出来时似乎被“忽略”,而当我使用 dest[n-1] = '\0' 时它被认为是句号?

这是我用来运行测试并尝试理解的主要/替代功能:

0 投票
3 回答
239 浏览

c - strlcpy:源和目标指向同一个对象

我刚刚开始了解strlcpy

我假设的问题是:如果目标和源指向同一个对象怎么办?

例子:

后端发生了什么?

是否strlcpy知道源和目标共享相同的指针?

或者

它是否盲目复制并浪费cpu周期-复制相同的字节?

0 投票
2 回答
126 浏览

c - 我自己实现 strlcpy 的问题?

您好,我在测试实现时遇到了一个问题strlcpy

我用原始的 strlcpy 做了一个测试,但我没有得到相同的结果 src = "string", len = 6 我的 strlcpy 的输出

原始 strlcpy 的输出

结果在 dst 中是相同的,但返回值应该是试图制作的字符串的长度