2006年11月12日の日記の1番目の記事へのコメント

gaim-2.0.0beta5 と ICQ

2chのスレ見たらこんな話が・・・.んなまさか.AIMのアカウントじゃ何もおこらんし.もしかしてICQだと起こるのかな?って自分のICQのアカウントって何だったっけ・・・.もう思い出せないや.

ICQのページに行って新規にアカウント取ったんですが,ふと見るとユーザ検索なんてのがありますな.げ,本名突っこんで検索したら古いの出てきたし.あれれ,こんなでっかい数字だったっけ? まあいいや

取ったアカウントでさっそくテストしてみると・・・見事に再現.落ちますね.あ,でもLinuxだと落ちません.何じゃこりゃ.2.0.0beta4で試してみても落ちます.なるほど.オフィシャル版だと落ちないということなので,念のためこちらのビルド環境を疑ってパッチ無し版をビルドしてみましたが,確かにこれだと落ちませんでした.

で,こっからが大変.MinGWのgdbでも入れりゃどこで落ちてるのかすぐ分かるだろうと思ったんですが,gdbかましてgaim動かそうとするとgdbが即落ち.動いているのattachしてもgaimが落ちたのに全然反応してくれずorz.使い方がよくわからんのですが,OllyDbgというのでちょっと動かしてみたらどうも「botch_utf」なる関数で落ちてるみたいです.でもバックトレースの見方がよくわからんのよね(´・ω・`)

ソースの方に戻ってパッチ見るとoscarでこの関数呼んでるのは3箇所.ええい,こうなったらprintfデバッグじゃ.って,何度か動かしてるとICQにログインできなくなりましたよ?なんか10分くらい待てとか言ってます.なんて厳しいんだ・・・(;´д`)

どうもgaim_prpl_oscar_convert_to_infotextで呼ばれるbotch_ucsで落ちてるみたいですねぇ.どれ,どんなテキストエンコードしてるのかメモリ内容表示させてみよう・・・って何かg_convertの返してきてる変換(UTF-8→UCS2)後の文字列長が異常に長いんですけど.もしかしてg_convertがおかしいのか?・・・と一瞬思ったんですがよく見ると変換後の文字列長だと思ってた変数は文字列長のポインタでしたorz.「*」1個つけて解決.

--- libgaim/protocols/oscar/oscar.c~    2006-11-11 09:12:41.000000000 +0900
+++ libgaim/protocols/oscar/oscar.c     2006-11-13 01:34:44.000000000 +0900
@@ -4281,7 +4281,7 @@
     charset = oscar_charset_check(str);
     if (charset == AIM_CHARSET_UNICODE) {
        encoded = g_convert(str, strlen(str), "UCS-2BE", "UTF-8", NULL, ret_len, NULL);
-       botch_ucs(encoded, ret_len);
+       botch_ucs(encoded, *ret_len);
        *encoding = "unicode-2-0";
     } else if (charset == AIM_CHARSET_CUSTOM) {
        encoded = g_convert(str, strlen(str), "ISO-8859-1", "UTF-8", NULL, ret_len, NULL);

あれ?何でこれLinuxだと平気なんだ???たまたまか? ちなみにいじってて気づいたんですが,Windowsで日本語名のグループ作ってそこに他の人のICQアカウント分類するとLinux側で同じアカウントでログインした際にグループ名が豪快に化けますね.逆もまた然り.あと,メッセンジャー追加の承認要求も化けまくりっつーかLinux間でも化ける・・・と思ったけど拒否の方のメッセージは化けないな・・・.気になる・・・.どこ直せばいいんだこれ.

[コメントを書く]

yaz 2006/11/13(月) 19:51:49
ああどうもすいません。さっき過去の差分を調べてみたんですが、4月16日あたりからこのバグが入っていたみたいです。ICQは日頃全然使っていないので、バグは見過ごされがちになってしまいます。linuxで発動しなかったのはたまたまそうなっただけだと思います。

グループ名や通知メッセージはwin上のicqクライアントとの運用でそれなりにうまく行っていると思っていたのですが、ダメですか。encodingをSJISにしてもダメですかねぇ…
nosuke 2006/11/14(火) 01:59:51
自分もICQまったく使わんのですが,まあこの辺,機会があったら見てみます(^^;.

お名前:  メールアドレス(省略可):
メールアドレスも表示されます
ここに名前その他を書いてはいけません: ここにメールアドレスその他を書いてはいけません:

2006年11月12日の日記の1番目の記事へのコメント

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2006年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ