カレンダー

2024/04
 
27
282930    
       

広告

Twitter

記事検索

ランダムボタン

穴を隠す

by 唐草 [2022/04/19]



 職場で導入しているシステムの拡張機能としてぼくが書いたプログラムは、痒いところに手が届くと評判だ。去年は6,500回ぐらい使用された。
 本来のシステムがあまりにも大掛かりで改修もままならない。いくら優秀でも業務の変化についていけないのでは、日に日に陳腐化していく。システムの老朽化をカバーするのが、ぼくの拡張機能の役目。小回りの利く設計なので変化するニーズに柔軟に対応してきた。
 先日、新たな仕様追加の依頼が来た。機材管理部のミスで数年前からシステム上の設定と実際の状況が噛み合わなくなっていた。人的ミスと改修しにくいシステムのコンボという最悪の事態。これをどうにかしてほしいという話だった。
 そんなことが起きても不思議はないと薄々感じていた。想定とは少し違ったけれど、ぼくのプログラムならちょっとした変更で対応できるはず。
 ソースコードを眺めながら対応を検討していた。
 その時、気づいてしまった。
 数年前からデータの受け取り方に致命的な問題があったことに。
 そのプログラムは勤怠管理のようなことを行うので、場所と時間のデータがとても重要。登録前にユーザ側でも内容をチェックするし、チェック済みの値を受け取ったサーバ側でもチェックする。本当に正しいことをダブルチェックしてから記録を付ける設計になっている。
 そう作ったつもりだったのだけれども、そうなっていなかった。
 1箇所だけユーザ側でしかチェックしていない項目があった。だから、コマンドを使って直接サーバへデータを送れば、一部が不整合でも受理してしまうというバグが隠れていた。
 実行は難しいが、不可能ではない。現に仕様を理解しているぼくは、バグを利用して不正登録ができた。勘のいいユーザがバグを利用して利益を得ていたかもしれない。
 自分のミスを直視するのは嫌だったが、渋々過去ログを確認した。幸運にも不正利用の痕跡はなかった。ぼくのミスに気づいた人はいなかったようだ。
 今回の更新を機にバグを密かに直しておこう。これでぼくの評判は保たれる。