2006年10月23日の日記の1番目の記事へのコメント
■gaim-2.0.0beta4でYahooのユーザ情報取得
何か今日になってgaimが超不安定になり,次第に悪化して最終的に上げたら即落ちるという酷い状況になってしまったんですが,その原因を追っている過程で全然違う問題に遭遇.Yahooのアカウント右クリックしてユーザ情報取得しようとすると100%gaimが死んでしまうようです.バックトレースを見るとstrndupで長さに-1が渡されてるのが落ちてる原因みたいなんですが,それが発生しているのが libgaim/util.c の1138行目付近.
何だかわからんけど文字列比較がはみ出てるみたいですねー.↓みたいなコードで,end_tokenがスペースで,*pがスペースだったりすると,pがqを追い抜いて,q - p で求める長さが-1になっちゃうみたいな.
q = strstr(p, end_token); /* Trim leading blanks */ while (*p != '\n' && g_ascii_isspace(*p)) { p += 1; }
というわけで↓とかやっとけばとりあえず解決.ていうかWindows版の2.0.0beta3.1でも落ちるな・・・.うーん,初歩的だけど,これってもしかして日本のYahoo固有の問題だったりすんのかな?
--- /home/compile/gaim-2.0.0beta4.org/libgaim/util.c 2006-10-23 21:11:38.000000000 +0900 +++ /home/compile/gaim-2.0.0beta4/libgaim/util.c 2006-10-24 01:08:43.000000000 +0900 @@ -1099,7 +1099,7 @@ } /* Don't bother with null strings */ - if (p == q) + if (p >= q) return FALSE; if (q != NULL && (!no_value_token || @@ -4031,233 +4031,3 @@ return buf; }
[コメントを書く]
2006年10月23日の日記の1番目の記事へのコメント
Yahoo! Japanのプロフィールページのフォーマットが他の国のと多少違うのがそもそもの原因で、
項目の抜き出しで失敗していました。
http://sourceforge.net/tracker/index.php?func=detail&aid=1638469&group_id=235&atid=300235
http://sourceforge.net/tracker/index.php?func=detail&aid=1467348&group_id=235&atid=100235