« 信者アイズ | メイン | 99回目の必死判定 »
2005年07月07日
今日であった愉快なコード
うなぁ。
壮絶なりperl変数の罠。
バイト列でつっこんであるから、当然といえば当然なんだが、
0x00が変数値として保持されるので文字列としてその変数を扱うとき困る。実に困る。
ていうかそれを引数にしてバッククォートから外部コマンド実行したら、
0x00のところで入力終了しやがった。
つまりそれ以降の引数は無かったことに。
でもそのコマンド文字列をprintfしてみるとあら不思議、普通に表示されるように見えるんだ。
そして当然それをコピペして実行しても期待通りコマンドは動く。ははは。
でもってstrlenでサイレントにプロセスが消えるのもカンベンな。
いちばん腹立たしいのは呼んでた外部コマンド(前任者作)が
引数足りないとSegmentationFaultで、
Perlスクリプトから外部コマンドで呼んでて、
しかもそのスクリプトはデーモンとして動いてるから結果的に
コマンド失敗のログのみ無為に残るという素敵な状態になること。
coreファイルも残っていたのだが、デーモン実行させてるディレクトリがプログラムの配置場所と違うため、プログラムファイルと同じ場所にcore吐かれない。
つうか根本的に何のチェックも無く
strcpy(path, ++argv);ってありえないと思うんだがどうだろう
その引数の採り方カコヨスギます
_| ̄|○
投稿者 kagerou : 2005年07月07日 02:14
トラックバック
このエントリーのトラックバックURL:
http://scriptlife.hacca.jp/cgi-bin/MT/mt-tb.cgi/95