今日、私は発見したこと、次のコンパイルと版画42:ストリームからchar *を読み取っています - 別のバッファオーバーフローの失敗?
#include <iostream>
#include <sstream>
int main()
{
std::stringstream s;
s << 42;
char c[8];
s >> c;
std::cout << c;
}
しかし、これは右、潜在的なバッファオーバーフロー攻撃のですか?ユーザーが提供するストリームから読み込んだ場合、データのサイズを簡単に知ることができず、十分なストレージを割り当てることができません。 std::gets
が削除されました。
おそらくhttps://stackoverflow.com/questions/3203452/how-to-read-entire-stream-into-a-statstringに関連していますか? – lz96
これはこれを行う正しい方法を示しています、私の質問は、C++が足で自分自身をそう簡単に撃たせることができる理由です。 – Lyberta
@ M.M 'fgets'にはサイズパラメータがありますが、これはありません。 – Lyberta