01/11/04 00:11.net
>>48
>「ユーザー入力はmalloc()したバッファにコピー」すれば安全、と
前もってサイズが判れば…ね。
それと、それはメモリ保護がしっかり機能しているOSではの話。
仮に、heapとcode領域が近所にあって、しかも読み書きフリーな実装
だったらさぁ大変(実際にそんなOS無いと思うけど。)
fgetfも結局、前もってこっちが最大サイズを指定しないといけないし。
どうしても不確定な長さの文字列や、データを得たい場合は、ループと
reallocを組み合わせてセコイことしなきゃいけないね。
>>49
書き方の問題だと思うよ。
例えば...
int hogehoge(char *h_src)
{
char h_dest[255];
strncpy(h_dest,h_src,255);
if(h_dest[254] != '\0') return -1; //Over
...
return 0; //SUCCESS
}
とか。
確かに処理的には、他のバグを埋め込んでしまう可能性もあるけど、
この場合、ナにがヤバイかって、スタックを書き換えてしまうことがヤバイわけだから。
h_srcがローカルでも読むだけならまったく問題なし。