[スレッド全体]

2008/6/23 (月) 04:07:51 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5363] 長過ぎるパス名で落ちる
>>data:6689も同様と思われる、長過ぎるパスのファイルを開くと落ちる既知の不具合についてです。

下記4箇所で_MAX_PATHを .nMaxFile に設定しますが、_MAX_PATH以上のファイルパスとなるとバッファに'\0'が無い状態となって突き抜けています。

CDlgOpenFile.cpp
 DoModal_GetOpenFileName()
 DoModal_GetSaveFileName()
 DoModalOpenDlg()
 DoModalSaveDlg()

下記のようにすることで取りあえず落ちるのは回避できるんですが、真っ当な方法じゃないような気もします。
 m_ofn.nMaxFile = _MAX_PATH - 1;
 memset( m_ofn.lpstrFile, 0, _MAX_PATH );  // 最後2文字を0にするだけでもOK

どうすべきでしょうか?

2008/6/25 (水) 12:52:09 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5370] Re:長過ぎるパス名で落ちる
長過ぎるパスが指定されたらエラーを表示して処理をキャンセルするパッチを作成しました。

Patches #2002211

2008/6/26 (木) 23:20:03 もか  
INCM1.23c
[5376] Re2:長過ぎるパス名で落ちる
>Patches #2002211
コマンドラインから_MAX_PATH以上のファイル名を送ると落ちるので、
その対策パッチを追加しておきました。
なすこじさんのパッチを確認したかったのですがXP SP3しか環境が無いのでパスします。。

ダイアログの方は、「DBCSのファイル名でMAX_PATH以上」でないと変にならないんですね。
ASCIIだけでMAX_PATH越えにしたら、エクスプローラの右クリックがおかしいし、
ダイアログで「ファイル名が無効」とでてそもそも開けなくなりました。

2008/6/27 (金) 22:14:54 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5377] Re3:長過ぎるパス名で落ちる
▼ もかさん
> >Patches #2002211
> コマンドラインから_MAX_PATH以上のファイル名を送ると落ちるので、
> その対策パッチを追加しておきました。


どうもありがとうございます。
ソースコードおよび動作を確認しました。

あと、私の修正の方で260バイト目がSJISの1バイト目だった時にエラーとならないことがあったので修正しました。

Windows98はちょっと動作が違うようで本修正が有効に働きませんでした。
異常終了しないような感じなので、取りあえずはそのままです (^^;

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.010][st:0.000]