1

mkdir()for Cの安全な代替手段はありますか? いくつかのコードを調べていると、 への呼び出しを使用していることに気付きましたmkdir()。US-CERT Secure Coding サイトで読んだことによると、その機能を使用すると、「Time of Check, Time of Use」(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は私が言及しているものです。

4

2 に答える 2

2

あなたの質問は少しあいまいです。US-CERT ドキュメントといくつかのサンプル コードへの参照があればよいでしょう。

それでも、答えはmkdirat()だと思います。

于 2011-06-02T17:37:34.563 に答える
1

mkdir()ディレクトリが存在するかどうかを確認するためのチェックが先行するときは、TOCTOU - Time of Check、Time of Useのみです。

あなたの例では、呼び出し元のコードが正しいことを行う場合、上記の使用法は問題ありません。ザックのコメントを確認してください。

于 2011-06-02T17:45:55.420 に答える