以前から LZH 書庫に対応している WinRAR ですが, 先頃公開された 3.60 beta 1 において lh7 についての対応化が行われましたので, これを機会に情報ページを設けてみました。
このページでは, WinRAR 3.60 beta 8 での制限等について簡単に記述してあります。 ここで記述されている点については, beta 1 の頃と大きな変化はありません。 情報は beta 8 についてのものです。
●属性について
全て (読み込み, アーカイブ, 不可視, システム) 正常に復元されます。
●タイムスタンプについて
基本ヘッダーに記録されている情報のみ扱われますので, 多くのツールと同様, 更新日時のみ復元が行われ, h2 形式ヘッダー未満の書庫については, NTFS ファイルシステムであっても ftime 形式 (2 秒単位) でタイムスタンプが扱われます。
この辺りについては, オリジナルの LHA.EXE を含めた多くのアプリと同様となっていますので, 大きな問題は発生しないものと思われます。
●ファイルサイズについて
UNLHA32.DLL の独自ヘッダーに対応していないことにより, 4GB を超えるものを扱えない点は多くのアプリと同様なのですが, 2GB を超えるものについても正常に扱われない場合があるようです。 例えば, 3GB のファイルの展開を行った場合, 特にエラー等の警告表示を行うことなく, 展開処理の最後 (CRC チェック等の段階。) で当該ファイルが削除されてしまったこともありましたし, ファイルは正常に展開されているものの, 通常行われない警告音が発せられることもありました。 (同様に巨大なメンバーの展開でも, 発せられないこともある。)
●lhd 形式 (ディレクトリー) メンバーについて
lhd メンバーを扱うことはできません。 通常あり得ませんが, lhd メンバーのみで構成された書庫を扱おうとした場合, WinRAR 側での処理を諦め, LZH 書庫に関連付けされたソフトへ引き渡されます。 (WinRAR に関連付けされていた場合についてはテストしていません。)
●圧縮形式について
lh0 / lh1 / lh4~lh7 形式が扱えます。 その他の形式については, 扱うことができません。 その場合には, エラーログが表示されますが, 当該メンバーの残骸が残ってしまいます。
メソッド ID と実際のメソッドが異なるメンバー (lh6 と lh7 形式メソッドの区別されていなかった時期が存在するため, そのような書庫が存在します。) の主なものについては, 以下のとおりです。 こちらについても, 展開に失敗したメンバーの残骸が残されますので, 注意してください:
メソッド (ヘッダー/実際)
|
結果
|
コメント
|
lh4/lh5
|
×
|
|
lh5/lh4
|
○
|
|
lh5/lh6
|
×
|
普通は展開できない。
|
lh6/lh5
|
×
|
普通は展開できない。
|
lh6/lh7
|
×
|
DJLHA を始めとした一時期のツールで作成される。
|
lh7/lh6
|
○
|
|
●書庫形式について
h0 / h1 / h2 形式が扱えますので, 通常, 問題は発生しないものと思われます。
●「指定外の場所へファイルが展開されてしまう脆弱性」の問題について
絶対パスをもつものや, 親ディレクトリーを示す ".." のパス情報をもつメンバーについては, 指定したディレクトリー配下へ展開が行われるように調整が行われます。
●「バッファーオーバーフロー」の問題について
1000 文字といった長い名前をもったメンバー等の存在する書庫については, 警告表示されますが, 一覧は行えます。 展開についても, 警告を伴いますが, 当該環境で扱える文字数に切り詰められた上で通常の展開が行われます。
これらの不正なパス情報をもったファイルについては以下のとおりです:
不正内容
|
結果
|
絶対パス (/WORK/Test.TXT)
|
冒頭の "/" を無視して, 展開先の配下へ展開する。
|
不正パス (../../WORK/Test.TXT)
|
"../" のパス情報を無視して, 展開先の配下へ展開する。
|
オーバーフロー (Long~700字~.txt)
|
OS で扱える範囲であれば展開される。 超えていた場合は扱える文字数へ変換した上で展開される。
|
拡張子偽造 (Test.c ←40字→ .exe)
|
関連付け実行しようとした際には, 拡張子偽造ファイルとしてエラーとなる。 展開は可能。 偽造を伴わない実行形式ファイルについては, 確認無く実行されるので多少注意が必要。
|