为什么 readlink return 不是空终止值?
Why doesn't readlink return a null-terminated value?
The Single UNIX ® Specification, Version 2 (1997) and The Open Group Base Specifications Issue 6 (2004) 都要求 readlink
不会在 buffer
中放置以 null 结尾的值:
APPLICATION USAGE
Conforming applications should not assume that the returned contents of the symbolic link are null-terminated.
非空终止有哪些注意事项buffer
?如果 readlink
没有正确使用,它不会带来安全风险吗?
我刚刚阅读了您的链接。
一个简单的方法来使这个安全使用是在函数 returns 时将一个零写入最后一个缓冲区位置。使用返回的尺寸。
您应该仔细检查返回的大小值是否不是 -1 并且始终小于缓冲区长度。如果相等则被截断(可能)。
What are the considerations in not null-terminating buffer?
如文档所示,可移植性。很可能存在(-ed?)广泛使用的 readlink
实现没有 null-terminate 缓冲区。
Couldn't it pose a security risk when readlink isn't properly used?
我猜每一段使用不当的错误代码都会带来安全风险。程序员有责任编写没有安全风险的好代码。 posix 页面的示例部分显示了 readlink
.
的正确用法
The Single UNIX ® Specification, Version 2 (1997) and The Open Group Base Specifications Issue 6 (2004) 都要求 readlink
不会在 buffer
中放置以 null 结尾的值:
APPLICATION USAGE
Conforming applications should not assume that the returned contents of the symbolic link are null-terminated.
非空终止有哪些注意事项buffer
?如果 readlink
没有正确使用,它不会带来安全风险吗?
我刚刚阅读了您的链接。
一个简单的方法来使这个安全使用是在函数 returns 时将一个零写入最后一个缓冲区位置。使用返回的尺寸。
您应该仔细检查返回的大小值是否不是 -1 并且始终小于缓冲区长度。如果相等则被截断(可能)。
What are the considerations in not null-terminating buffer?
如文档所示,可移植性。很可能存在(-ed?)广泛使用的 readlink
实现没有 null-terminate 缓冲区。
Couldn't it pose a security risk when readlink isn't properly used?
我猜每一段使用不当的错误代码都会带来安全风险。程序员有责任编写没有安全风险的好代码。 posix 页面的示例部分显示了 readlink
.