it.xnews.jp
出典: Zarf Updates 原文公開: 2026-10-03 生成: 2026-10-05 読了 約 3 分 model: claude-haiku-4-5 原文: https://blog.zarfhome.com/2026/10/infidel-goes-wild raw.md

Infidelで発見された重大なメモリ破損バグ

Andrew Plotkinがインフォコムのゲーム「Infidel」の分析中に、メモリ領域を不正に上書きするワイルドポインタバグを発見した。1983年の初版と1984年のMacintosh版の両方に存在し、プレイヤーやテスターには気付かれなかった。

バグの詳細

Andrew Plotkinはメモリレベルのデバッガを使用してInfiedelを分析していた際、DESERT-TO-TABLEルーチンに重大なバグを発見した。このルーチンのTBL引数が、正しいグローバル変数DESERT-TABLE(アドレス11129)ではなく、定数値30で初期化されていた。その結果、ルーチンはDESERT-TABLE配列ではなくアドレス30以上のメモリを上書きする。

このバグは、グローバル変数が16から255の範囲で番号付けされていることに起因する。DESERT-TABLEは15番目のグローバルであり、したがって番号30である。だがルーチンはこの値を定数として扱うため、意図した配列ではなく固定メモリ領域を破損させるのだ。

影響範囲

DESERT-TABLE配列は100個の値(200バイト)で構成され、最大50個のオブジェクト(エントリあたり2つの値)を保持できる。プレイヤーが無限砂漠に9個のオブジェクトをドロップすると、最後のオブジェクトがアドレス64から始まる略語テーブルの先頭を上書きしてしまう。この破損によりテキスト表示が異常になり、インタプリタがクラッシュする可能性がある。

ただし、無限砂漠でオブジェクトをドロップすると1/3の確率で砂に埋もれて消失する。プレイヤーがこの機能をテストするインセンティブに乏しいため、バグは発見されず出荷された。Infidelのゲーム内テキストは「地面が硬すぎます(The ground is too hard here)」と表示され、プレイヤーが掘る理由はない。

複数バージョンでの存在確認

バグはInfidelのリリース22シリアル840522(Macintosh版)および初版シリアル830916で確認された。わずかなメモリアドレスの違いがあるものの、両バージョンとも同じ構造的な欠陥を抱えていた。1984年のMacintosh版リリースでも、このバグに対する対処は何も施されなかった。

筆者の見立て

この記事は元記事の事実のみに基づいて自動生成されました。

出典

Zarf Updates「Infidel goes wild」 https://blog.zarfhome.com/2026/10/infidel-goes-wild (The Infocom Cabinetの報道による)

この記事をシェア