私の質問は、セキュリティの観点からです。一部のコードをクリーンアップしている最中ですが、現在のコードには制御されていないフォーマット文字列の脆弱性があることがわかりました。printf()
次のようなものに文字列を渡しています。
void print_it(char * str)
{
printf(str);
これは明らかに安全でないプログラミングと見なされますが、gcc でさえ、通常、少なくとも何らかの警告が表示されます。
警告: フォーマットは文字列リテラルではなく、フォーマット引数もありません
問題を「修正」するために、取得したものが文字列として扱われるようにすることができます
printf("%s", str);
しかし、長さ指定子を使用することで追加のセキュリティがあるかどうか疑問に思っていました。何かのようなもの:
printf("%.*s", (int)sizeof(str), str);
それがより安全になる理由は思いつきませんが、ここで明らかな何かが欠けていたとしても驚かないでしょう。