- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Fortify 扫描后,它提示 PathCombine
函数
TCHAR buff[_MAX_MAX_PATH];
PathCombine(buff, s1, strTemp);
所以我想改用 PathCchCombine
。因为它使用“目标缓冲区的大小”作为参数。我能说这足够安全吗?或者还有比这更好的方法吗。
最佳答案
这确实取决于您想要实现的目标。
作为组合两个路径片段的基本原则,PathCChCombine 在一些重要方面更安全。
为清楚起见:
它不会防止输出缓冲区溢出。
它不允许您拥有超过 MAX_PATH 的目标缓冲区
它确实以 HRESULT 的形式为您提供更好的反馈,您可以在其中构造更好的流处理,而不是获得令人讨厌的内存异常。
它确实接受带有“\”、“\?\”和“\?\UNC\”前缀的路径,而 PathCombine 不接受。
有没有更好的办法:
好吧,这取决于您的假设。但是假设你的问题是你想要处理比 MAX_PATH 更长的返回路径(输出缓冲区)那么你应该看看
此函数允许您设置比 MAX_PATH 更长的目标缓冲区。为此,您需要使用 PATHCCH_ALLOW_LONG_PATHS(0x00000001) 设置最终参数 (dwFlags)。
NOTE: When the PATHCCH_ALLOW_LONG_PATHS flag is set the output buffer must be more than MAX_PATH
此函数与 PathCchCombine 和 PathCchCombineEx 的不同之处在于输出缓冲区是在堆上创建的。这意味着你不需要声明返回字符串的大小并减少堆栈使用。
关于c++ - PathCchCombine 是否是 PathCombine 的安全版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950041/
Fortify 扫描后,它提示 PathCombine 函数 TCHAR buff[_MAX_MAX_PATH]; PathCombine(buff, s1, strTemp); 所以我想改用 Pat
我是一名优秀的程序员,十分优秀!