関連譜類・設定の整理を概ね終えたため,ここで sss-2 から sss-1,db-2 から db-1 への保手名変更は完了とする。
{希哲15年11月2日16歩 K#F85E/E74C-09FE}
宇田川浩行{希哲15年11月1日11歩 K#F85E/E74C-EE72}
宇田川浩行{希哲14年9月26日6歩 K#F85E/5B28-CDBB}
宇田川浩行knm
}{29時}{30時}{28時30分}{22時22分}{21時17分}(75){希哲14年8月19日の開発 K#F85E/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() を呼び出す時の引数 knm に ipa_reg 用の文字列が入ってしまっていた。 ただし,本番環境のみで,手定め環境では再現しなかった。
時印と合わせてみるに,デライト正式離立の時点でこの不具合はあり,ずっと蓄積されていたようだ。knm が最近まで未使用であったこと,手定め環境では起きなかったことで気付かなかった。
列の指定などを間違えることで意図せず不要な出与えを取ってきてしまう,というのはよく言われることで自分でも意識していたが,まさか保存時点で未定義動作による取り違えが起きているとは思わなかった。いまどき C のような記憶管理が必要な言語でウェブサービスを開発することが珍しいせいでもあるだろう。良い勉強になった。
15日の開発で決めていた通り,30時前には利用者の IP アドレスに関する出与え・交度を全て削除した。ここで迷いが無かったのは幸いだった。
新括体採番法の実装が途中だったため,「保守作業中」にしたまま翌日まで不休の作業を継続した(出振るいは20日10時50分頃)。