问题标签 [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.
c - 为什么 strlcpy 和 strlcat 被认为是不安全的?
我理解这一点,strlcpy
并且被设计为和strlcat
的安全替代品。但是,有些人仍然认为他们不安全,并且只会导致不同类型的问题。strncpy
strncat
有人可以举例说明使用strlcpy
or strlcat
(即始终为null 终止其字符串的函数)如何导致安全问题吗?
Ulrich Drepper 和 James Antill 声明这是真的,但从未提供示例或澄清这一点。
c - 为什么 strlcat 和 strlcpy 是 unsigned int 而不是 void?
我不明白为什么我们必须返回一个unsigned int
forstrlcat
和strlcpy
,为什么我们需要它?这不是该功能的目的。
感谢您的回复
c - 什么定义了 C 中的 strscpy?
来自 linux.conf.au 2019 的 Kees Cook 在 youtube 上的这段视频中,他提到strscpy
这是首选,但通常会做用户想要的事情(更少NUL
-padding)。但是,他没有说是什么定义了这个(规范或标题),
从视频中滑出,
strscpy()
我找不到man
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' 时它被认为是句号?
这是我用来运行测试并尝试理解的主要/替代功能:
c - strlcpy:源和目标指向同一个对象
我刚刚开始了解strlcpy。
我假设的问题是:如果目标和源指向同一个对象怎么办?
例子:
后端发生了什么?
是否strlcpy
知道源和目标共享相同的指针?
或者
它是否盲目复制并浪费cpu周期-复制相同的字节?
c - 我自己实现 strlcpy 的问题?
您好,我在测试实现时遇到了一个问题strlcpy
我用原始的 strlcpy 做了一个测试,但我没有得到相同的结果 src = "string", len = 6 我的 strlcpy 的输出
原始 strlcpy 的输出
结果在 dst 中是相同的,但返回值应该是试图制作的字符串的长度