DOS 3.3 SYS.COMコマンドに見つかった隠れたバグ:NetDriveディスクイメージ破損の謎
2025-02-24
この記事では、著者がDOS 3.3システムコマンド`SYS.COM`のバグを調査した過程を詳細に説明しています。このコマンドはブートローダーコードをディスクにコピーしますが、NetDrive仮想ディスクイメージで使用すると、イメージが破損します。綿密な分析の結果、著者は`SYS.COM`が、ディスクパラメータを取得するために使用される汎用IOCTL呼び出しの戻り値をチェックしていないことを発見しました。この呼び出しが失敗した場合(例:NetDriveドライバがその機能をサポートしていない場合)、`SYS.COM`は誤ってゴミデータをディスクのブートセクタに書き込み、イメージを破損させます。このバグは、DOSがディスクのジオメトリ情報を取得しようとするため、特定の種類のディスクイメージ(例:ハードディスクイメージ)でのみ発生します。フロッピーディスクイメージでは発生しません。著者は最終的にバグの根本原因を突き止め、発生する条件を説明しています。
開発