[mew-dist 19903] Re: strcpy()
SAKAI Kiyotaka
ksakai at example.com
2001年 12月 21日 (金) 15:49:30 JST
>> In article <20011214.170133.08338948.y-koga at example.com>, Koga Youichirou <y-koga at example.com> writes:
> Kazu Yamamoto <kazu at example.com> (山本和彦):
>> mewls で strcpy() を使っています。安全を期して、strncpy() に変える方が
>> いいでしょうか?
> core を吐くようならださいですけど、今のコードでは strcpy() 部分に
> ついては溢れないように見えます。
同感です。まっとうな OS であれば溢れないと思います。
もし問題が発生する環境があるとすれば、
#ifdef PATH_MAX
# define MAX_FILE_NAME_LEN PATH_MAX
#else
# define MAX_FILE_NAME_LEN 1024
#endif
というコードから判断して、
1. PATH_MAX が OS のヘッダファイルで定義されていない。
2. その OS で使えるパス名の長さが 1024 を越えている。
3. ユーザーが 1024 文字を越える長さのフォルダを作成した。
という条件をすべて満たす場合だけだと思います。
それでも安全を期すとすれば、単純に strcpy() を strncpy() に置換すると
動作が変わってしまう可能性がありますので、それよりは溢れそうなときは
エラーメッセージを出して exit() する方がいいと思います。
--
酒井 清隆 (E-mail: ksakai at example.com)
Mew-dist メーリングリストの案内