google-code-prettify

2008-09-11

NetBSD-currentでcannaserverが落ちるのを修正する

NetBSD-currentのバージョンを上げたら、cannaserverが動作しなくなってしまった。

cannaserverのlib/RK/ncache.cに、以下のコードがある。
#define hash(x)     ((int)((x)%NCHASH))

xはどこかのバッファのアドレスで、このアドレスを元にhashのインデックスを作成しているようだ。

このアドレスが0x80000000以上になるとhash(x)が負になってしまい、誤動作してしまう。
このバグを直すには、
#define hash(x)     ((int)(((unsigned long)(x))%NCHASH))

とcastしてやれば良い。

08/09/12追記:
他に困っている人いないのかな?と思って検索してみた。
- Orz日記でも取りあげられていた。
- cvs版では、06/03/30に修正済みだった。(未リリース)

0 件のコメント: