安全でない書式指定子

一部の書式付き入力形式は、バッファー・オーバーフローを引き起こす可能性があるため、使用してはなりません。

書式付き文字列では、バッファー・オーバーフローが発生しないようにしなければなりません。特に "%s" 入力形式は、本質的に安全ではありません。代わりに、"%ddds" や "%*s" を使用してください。ここで、ddd はデスティネーション・バッファーのサイズを示します (例: "%24s")。コンパイル時にバッファーサイズが一定でない場合は、"%*s" を使用できます。"*" は次の入力引数から最大サイズを取得します。例: scanf("%*s", sizeof(buffer), buffer);

ID

問題箇所

説明

1

書式の不一致

安全でない書式付き入力文

          
#include <stdio.h>

char buffer[1024];

int main(int argc, char **argv)
{
    scanf("%s", buffer); // unsafe: could overflow buffer
    // better is scanf("%*s", sizeof(buffer), buffer);
    printf("read %s\n", buffer);
    return 0;
}
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。