The Single UNIX® Specification, Version 2 (1997) 和The Open Group Base Specifications Issue 6 (2004)都要求readlink
不要在buffer
:
应用程序使用
符合标准的应用程序不应假定符号链接的返回内容是空终止的。
非空终止有哪些注意事项buffer
?readlink
使用不当会不会带来安全风险?
The Single UNIX® Specification, Version 2 (1997) 和The Open Group Base Specifications Issue 6 (2004)都要求readlink
不要在buffer
:
应用程序使用
符合标准的应用程序不应假定符号链接的返回内容是空终止的。
非空终止有哪些注意事项buffer
?readlink
使用不当会不会带来安全风险?
非空终止缓冲区有哪些注意事项?
如文档所示,可移植性。很可能存在(-ed?)广泛使用的readlink
不终止缓冲区的实现。
未正确使用 readlink 会不会带来安全风险?
我猜每段使用不正确的错误代码都会带来安全风险。程序员负责编写没有安全风险的好代码。posix 页面的示例部分显示了readlink
.
我刚读了你的链接。
使这个安全使用的一个简单方法是在函数返回时将零写入最后一个缓冲区位置。使用返回的大小。
您应该仔细检查返回的大小值是否不是 -1 并且始终小于缓冲区长度。如果它相等,则它被截断(可能)。