对于C,mkdir()
是否有安全的替代方案?我正在检查一些代码,并注意到它正在使用mkdir()
的调用。根据我在US-CERT安全编码站点上所读到的内容,使用该功能会使其容易受到“检查时间,使用时间”(TOCTOU)的影响。
修改
来自zlib的miniunz.c源
int mymkdir(dirname)
const char* dirname;
{
int ret=0;
#ifdef WIN32
ret = mkdir(dirname);
#else
#ifdef unix
ret = mkdir (dirname,0775);
#endif
#endif
return ret;
}
以上mkdir
就是我指的。
答案 0 :(得分:2)
你的问题有点模糊;对US-CERT文档的引用和一些示例代码会很好。
尽管如此,我打赌答案是mkdirat()。
答案 1 :(得分:1)
mkdir()
仅在TOCTOU - Time of Check, Time of Use之前检查目录是否存在。
如果调用代码执行正确的操作,在您的示例中,上面的用法是可以的。检查扎克的评论。