【发布时间】:2019-07-03 05:09:29
【问题描述】:
在video on youtube by Kees Cook from
linux.conf.au 2019 中,他提到strscpy 是首选,但通常会做用户想要的(较少NUL-padding)。但是,他没有说是什么定义了这个(规范或标题),
从视频中幻灯片,
我找不到strscpy() 和man
$ for i in strcpy strlcpy strscpy; do man -w $i; done;
/usr/share/man/man3/strcpy.3.gz
/usr/share/man/man3/strlcpy.3bsd.gz
No manual entry for strscpy
【问题讨论】:
-
strscpy()它不是 C 的一部分,也不是 POSIX 的一部分。它是一个扩展。使用它会使代码不可移植。 -
strscpy 安全地做它的事情,但我不认为静默截断是用户通常想要的。无论如何,它是nit标准。执行相同操作的标准(但可选且不受 glibc 支持)函数是 strcpy_s。
标签: c linux linux-kernel strcpy strlcpy