はじめて他人のバッファオーバーフローエラーに巻き込まれた

PythonCGIプログラムからsubprocessモジュールで他人の作ったC++プログラムを呼び出したところ、挙動がおかしいので出力を調べたところセグメンテーション違反でプログラムが強制終了されていることがわかった。セグメンテーション違反している以外の出力が無いのでソースを見ないことには原因が分からず。しょうがないので適当にprintfデバッグで該当箇所を探した。

すると、sprintfでパス文字列をchar[128]な変数にsprintfしようとしてエラーしている。どうやら書き手は128程度あればいいだろうと思っていたらしい。本来はパスはどれぐらいの長さ確保しておけばいいんだろうなどと考えつつ、もうつかれたしいいや・・と調べずに休むことにした。