Thursday, March 4, 2010

TSConverter patch の bug

以前 TSConverter のUNIX系パッチは linux(debian/lenny) ではセグメンテーション違反で落ちるというコメントがあった。
最近、coLinux で lenny を動かしてみたので、コメントにあったように _file を _fileno に変更し、コンパイルして試してみると確かに落ちる。コマンドラインオプションの処理がいい加減だったため、ファイル名を指定しないと strncpy に NULL ポインタが渡され落ちるようだ。
もしやと思い FreeBSD でもファイル名を指定しないで動かしてみると、落ちた。なぜ気づかない!!!かなり荒っぽく移植したものの、はずかし。
ご使用中の皆さんは、気になるようなら argv[optid] が NULL なら文句言って終了するようにしておいてください。

strncpy(mp4boxpath,pt,PATH_MAX);
+ if(argv[optind]==NULL){
+ fprintf(stderr,"no input file\n");
+ exit(-1);
+ }
strncpy(lpFile,argv[optind],PATH_MAX);
- if(strlen(lpFile)==0){
- fprintf(stderr,"no input file\n");
- exit(-1);
- }

そのうちパッチファイルを9/1版にするときにこっそり修正しておきます。

ファイル名さえ指定すれば lenny でも動いたんですけど、どこか他にも問題あるんでしょうかね?

No comments: