タグ

バグに関するbananapenguinのブックマーク (4)

  • FF6に任意のコードを実行できる脆弱性が発見される | スラド IT

    スーパーファミコンの人気RPG、ファイナルファンタジー6(FF6)にて、任意のコードを実行できる脆弱性が発見された(ニコニコ動画で公開されているデモ動画)。 FF6には、来キャラクターが装備できないアイテムを武器として装備できてしまうバグがあるのだが、この際に特定のアイテムを装備させて戦闘中に攻撃すると、メモリ内の$000Fおよび$0010部分に格納されているデータをアドレスとして参照し、対応するデータをコードとして実行してしまうという。$000Fは「戦闘開始からの経過時間をカウントするカウンターの2バイト目」で、$0010は戦闘中いくつかに変化する値が格納されているとのことだが、これだけでは任意のコードを実行できない。しかし、$000Fが0xC7、$0010が0xCEという値になっていた場合、「シャドウ」というキャラクターの名前データが格納されているメモリ領域のコードが実行されてしまう

    bananapenguin
    bananapenguin 2015/04/22
    すげえなあ。変態すぎる
  • ゲームの「バグ」の仕組みって面白いよな : キニ速

  • memologue - UNIX上でのC++ソフトウェア設計の定石 (2)

    鉄則2: シグナルハンドラで行ってよい処理を知ろう sigaction関数で登録したシグナルハンドラで行ってよい処理は非常に限定されている 次の3つの処理だけが許されている 自動変数の操作 “volatile sig_atomic_t” 型の大域変数の操作 「非同期シグナルセーフ」関数の呼び出し これ以外の処理を記述しないこと! 説明: シグナル受信時に何らかの処理を行うためには、シグナルハンドラと呼ばれる関数を用意し、それをsigaction関数でシグナル名と紐付けておけばOKです。しかし、シグナルハンドラ内で行ってよい処理は、上記の通り非常に限定されています。これを把握しないまま奔放なコードを書くと次のような現象が起き得ます: 問題1: プログラムがデッドロックする危険がある タイミングに依存する、再現困難なバグの原因となる デッドロックの発生が典型例だが、それ以外にも関数の戻り値不正

    memologue - UNIX上でのC++ソフトウェア設計の定石 (2)
    bananapenguin
    bananapenguin 2015/02/26
    シグナルハンドラと非同期シグナルセーフ関数
  • 32768両編成だと……? 京王線の電光掲示板に表示された長すぎる電車が話題に

    「この後の電車は32768両編成です」「えーっ」――京王線の電光掲示板のおかしな表示がTwitterで話題になっています。関連するツイートがTogetterの「京王線『この後の電車は32768両編成です』 長っ」にまとめられています。 32768両編成って何事京王線 twitter.com/paselanpatlin/…— LIHOさん (@paselanpatlin) 2013年2月13日 3万2768編成の電車が存在したら、1両20メートルとして全長655.360キロ。な、長い! 新宿・八王子間をはみだすどころか、直線距離で言うと、新宿から広島に届くくらいになります。一体いくつの駅が列車通過中になってしまうのかを思うと末恐ろしいです。そもそもこんなに長いと走れないでしょうが……。 32768編成車両に関するツイートまとめ プログラムに詳しい人たちは「この数字を見て『あーw』と思うかどう

    32768両編成だと……? 京王線の電光掲示板に表示された長すぎる電車が話題に
    bananapenguin
    bananapenguin 2013/02/15
    ありがちなバグ。負数の入力とか数値以外の入力とかのテストやらなかったのかなあ
  • 1