MPlayer 1.0rc1にバッファオーバーフローのバグ

MPlayer(現行バージョンの1.0rc1)にはバッファオーバーフローのバグがあるらしい。
参考:http://lists.grok.org.uk/pipermail/full-disclosure/2007-March/052738.html


MPlayerの公式サイトにはまだパッチが無いので自分でソースをいじって直す。

直す箇所

MPlayerのソースを展開して、「loader/dmo/DMO_VideoDecoder.c」の123行目辺りで、memcpy()関数のある行の次に、

this->iv.m_bh->biSize = bihs;

を付け加える。


前後と合わせると、こんな感じなる。

122:        this->iv.m_bh = malloc(bihs);
123:        memcpy(this->iv.m_bh, format, bihs);
124:        this->iv.m_bh->biSize = bihs;
125:
126:        this->iv.m_State = STOP;
127:        //this->iv.m_pFrame = 0;


修正したら、後はいつも通りにコンパイルする。

www/firefoxインストール時の/etc/make.conf

久しぶりにFreeBSDをいじって、Portsをメンテする。

★メモ

www/firefoxコンパイル時に/etc/make.confの設定を間違えるとFirefoxがコアを吐くのに気がついた。

# このオプションだとコアを吐く
CFLAGS= -O3 -march=pentium4 -fno-strict-aliasing -pipe -fomit-frame-pointer
# こっちはコアを吐かない
CPUTYPE=i686
CFLAGS= -O2 -mtune=pentium4 -fno-strict-aliasing -pipe

Vine Linux 4.0を4.1にアップグレード

Vine Linux 4.1がリリースしてたので、4.0からアップグレードする。


Vine LinuxのWEBサイトにアップグレード方法が書いてあるので、そのまま実行する。
http://www.vinelinux.org/

4.0 からのアップデートは、apt-line を 4.1 に変更 (/etc/apt/sources.list を 4.1 用に変更) して、

# apt-get update
# apt-get dist-upgrade

XEmacsのコマンド・メモ(検索・置換)

XEmacs(Emacs)での検索・置換のメモ。

検索

★インクリメント検索
  • C-s … 文末に向かって検索
  • C-r … 文頭に向かって検索

「C-s」のsはsearch、「C-r」のrはsの1つ前の文字、と覚える。


「C-s」を押すと、「I-search:」と出るので、ここに検索したい文字列を入力する。
ちなみに、ここに「C-j」を入力すると、改行にマッチさせることが出来る。

★非インクリメント検索
  • C-s リターン … 文末に向かって検索
  • C-r リターン … 文頭に向かって検索


インクリメント検索の時に、何も文字を入れないでリターンキーを押すと、非インクリメント検索になる。

★単語検索
  • C-s リターン C-w … 文末に向かって検索
  • C-r リターン C-w … 文頭に向かって検索

非インクリメント検索で、「C-w」を押すと単語検索になる。

例えば、「foobar foo bar」と言う文章があって、「foo」を単語検索したら、「foobar」にはマッチせず、「foo」だけにマッチする。

正規表現で検索
  • M-C-s … 文末に向かって検索
  • M-C-r … 文頭に向かって検索

正規表現検索と同様に、インクリメント、非インクリメント、単語検索が出来る。

置換

★対話的置換
  • M-% … 対話的置換
  • M-C-% … 対話的置換(正規表現

カーソル位置から文末に向かって置換する。


置換前と置換後の文字列を入力すると、検索候補の文字列に移動して、置換するか聞いてくるので、置換するときは「y」か「スペース」、置換しないなら「n」か「DEL」を押す。
他にも次の操作が出来る。

  • 「!」 … 全部置換
  • 「,」 … 文字列を置換するが、位置を移動しない
  • 「^」 … 前の置換候補の位置に移動する
  • 「C-r」 … リカーシブエディット

リカーシブエディットは、置換を一時中断して編集モードに戻る。
リカーシブエディットを終了するには、「M-x exit-recursive-edit」と入力する。

★一括置換
  • M-x replace-string … 一括置換
  • M-x replace-regexp … 一括置換(正規表現

1個ずつ置換するのが面倒ならこれを使う。

★置換範囲を選択

領域指定を使うと、置換範囲を選択出来る。
領域指定は下記記事を参照。
http://d.hatena.ne.jp/SPR/20070204

その他

  • M-x occur正規表現にマッチする箇所をリスト形式にして表示

リスト内で(「C-x o」でウインドウ間を移動出来る)「C-c C-c」を押すとジャンプ出来る。

  • M-x flush-lines正規表現にマッチする箇所を削除
  • M-x keep-lines正規表現にマッチする箇所以外を削除


PHP 5.2.1がコンパイル出来ない

OpenBSD 3.9にインストールしたPHP 5.2.0を5.2.1にしようとしたが、コンパイル中にエラーで止まる。
どうもPHP 5.2.1のバグらしい。
参考:http://bugs.php.net/bug.php?id=40410


エラーメッセージはこんな感じ。

/www/build/scripts/php-5.2.1/ext/posix/posix.c: In
function `zif_posix_getgrgid':
/www/build/scripts/php-5.2.1/ext/posix/posix.c:889:
error: `_SC_GETGR_R_SIZE_MAX' undeclared (first use in
this function)
/www/build/scripts/php-5.2.1/ext/posix/posix.c:889:
error: (Each undeclared identifier is reported only once
/www/build/scripts/php-5.2.1/ext/posix/posix.c:889:
error: for each function it appears in.)
make: *** [ext/posix/posix.lo] Error 1


上記URLに、スナップショット版を使えとあるので、下記URLからダウンロードする。
http://snaps.php.net/


後は、以前にPHP 5.2.0をインストールした手順でインストールする。

$ ftp http://snaps.php.net/php5.2-200702201330.tar.gz
$ tar xzvf php5.2-200702201330.tar.gz
$ cd php5.2-200702201330
$ ./configure --prefix=/usr/local/php-5.2-devel \
 --enable-mbstring \
 --with-apxs2=/usr/local/apache22/bin/apxs \
 --with-mysql=/usr/local/mysql
$ make
$ su
# make install

Windows版RealVNCを改造して日本語キーボードに対応させる

Windows版のVNCViewerを使ってLinuxFreeBSDを遠隔操作すると、
「半角/全角」キーが利かないので、SCIMを起動させるのが面倒くさい。(Ctrl+スペースで出来るが)


RealVNCのソースを改造して、日本語キーボードに対応させる事にする。


環境:Windows XP + Visual Studio 2005 + VNC 4.1.2


以下手順

続きを読む

Vine Linux 4.0用GCC 4.1.2のRPM

少し前にGCC 4.1.2がリリースしたので、Vine Linux 4.0用にRPMを作った。
Vine Linxu標準のGCC 4.0のRPMのSPECファイルを改造して4.1.2用にした。

i386Vine Linux 4.0用(ブラウザの右クリックで保存出来る)


上の2つを「rpm -ihv」でインストールしたら、

$ gcc-4.1.2 オプション

として使う。

GCC 4.1.2を使ってSVNFFmpegコンパイルする

SVNFFmpegは、Vine Linux付属のGCC 3.3.6を使うと、一部上手くコンパイルできない箇所があるので、GCC 4.1.2を使ってコンパイルする。
下記の記事のconfigureを次の通りに変えると、GCC 4.1.2でコンパイルされる。
http://d.hatena.ne.jp/SPR/20070123

$ ./configure \
 --cpu=pentium4 \
 --cc=gcc-4.1.2 \
 --disable-debug \
 --enable-mp3lame \
 --enable-libogg \
 --enable-vorbis \
 --enable-faad \
 --enable-faac \
 --enable-x264 \
 --enable-xvid \
 --enable-a52 \
 --enable-pp \
 --enable-pthreads \
 --enable-gpl