{出振るい}{開発}{開発記録}{交度}{デライト}{未定義動作}{取り違え}{22時22分}{虱潰し}{ipa_reg}...=}(75)

{希哲14年8月19日の開発 K#F85E/A-5B28-1177}

新括体採番法実装続き。

録落ちボタンの置き場が無くなっているため,自我設定画面を準備中にして握接出来るようにした。

21時15分頃,他の用者名前として IP アドレス が表示されていることに気付き,17分には保守作業中の画面に切り替え,調査修正作業に入る。念のため,sss-1 も同様に一時停止した(22時22分)。

進捗時限で区切る余裕もなく,休まず作業を続けたため経過などは以下に記しておく。

最初は全く心当たりが無かったため,攻撃可能性から探ったが,それらしい形跡は無かった。よく考えれば,今のデライト仕様把握的確攻撃をするのは不可能に近い。その他の可能性を虱潰しに探り,28時30分頃,原因特定29時頃には修正完了。この頃,sss-1 に関しては復旧させた。

原因は,DG::DBI::qy::reg_ego()iffy_存在判定をせずに ego_T::knm()返し値間接参照していたことだった。ここで出場側の dg_reg_ego() を呼び出す時の引数 knmipa_reg 用の文字列が入ってしまっていた。 ただし,本番環境のみで,手定め環境では再現しなかった。

時印と合わせてみるに,デライト正式離立の時点でこの不具合はあり,ずっと蓄積されていたようだ。knm が最近まで未使用であったこと,手定め環境では起きなかったことで気付かなかった。

指定などを間違えることで意図せず不要な出与えを取ってきてしまう,というのはよく言われることで自分でも意識していたが,まさか保存時点で未定義動作による取り違えが起きているとは思わなかった。いまどき C のような記憶管理が必要な言語ウェブサービス開発することが珍しいせいでもあるだろう。良い勉強になった。

15日の開発で決めていた通り,30時前には利用者IP アドレスに関する出与え交度を全て削除した。ここで迷いが無かったのは幸いだった。

新括体採番法の実装が途中だったため,「保守作業中」にしたまま翌日まで不休の作業を継続した(出振るい20日10時50分頃)。

{指定}

{}