
Ubuntu日本語フォーラム

ログインしていません。
アマチュア無線用のアプリなんですが8.04から10.04にアップグレードしたら起動途中でエラーを吐いて止まってしまいます。
エラーの内容は以下の通りですがこれはどういったことを意味してるんでしょうか。解決策が有れば教示いただけないでしょうか。
-----
*** buffer overflow detected ***: /usr/sbin/xfbbd terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x50)[0x7f6390]
/lib/tls/i686/cmov/libc.so.6(+0xe12ca)[0x7f52ca]
/lib/tls/i686/cmov/libc.so.6(+0xe0a08)[0x7f4a08]
/lib/tls/i686/cmov/libc.so.6(_IO_default_xsputn+0x9e)[0x77dafe]
/lib/tls/i686/cmov/libc.so.6(_IO_vfprintf+0xe24)[0x751a34]
/lib/tls/i686/cmov/libc.so.6(__vsprintf_chk+0xad)[0x7f4abd]
/lib/tls/i686/cmov/libc.so.6(__sprintf_chk+0x2d)[0x7f49fd]
/usr/sbin/xfbbd[0x80585ea]
/usr/sbin/xfbbd[0x808a93a]
/usr/sbin/xfbbd[0x804e20e]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x72abd6]
/usr/sbin/xfbbd[0x804ac21]
======= Memory map: ========
00634000-0063c000 r-xp 00000000 08:01 1032452 /usr/lib/libax25.so.0.0.0
以下省略
-----
オフライン
http://packages.ubuntu.com/lucid/fbb
でしょうか。
パッケージはlucidのツリーからインストールしたものでしょうか。
もし、universeが有効になっていなければ、有効にしてlucidのツリーからインストールしてみてください。
lucidからのもので正常に動作しない場合、詳しいことは存じませんが、以前は(バグがあっても)動いていたプログラムが、いつのころからか厳しくチェックされて実行が止められるようになっているように感じています。
これもそういった類の問題かも知れません。
apt-get source fbb
して、ソースパッケージを入手し、オーバフローしている部分を見つけて修正し、ビルドし直すと回避できるかも知れません。
普通にビルドしなおしただけだと、レポジトリのものが優先されて上書きされてしまうので、パッケージを固定するか、ビルド時にdch -iとかして上書きされないようにする必要があるのですが、このあたりの正しい作法も、よく理解しておらず、具体的な手順を説明することができません。申し訳ないです。。
オフライン
> http://packages.ubuntu.com/lucid/fbb
> でしょうか。
> パッケージはlucidのツリーからインストールしたものでしょうか。
インストールはSynapticパッケージ・マネージャのアマチュア無線(universe)からfbbを選択して行いました。
オフライン
パッケージ導入して起動してみましたが、起動時は大丈夫そうでした。
アマチュア無線?かなにかの設定が必要なようで、ちゃんと起動しきれていませんが。。
$ apt-cache policy fbb
するとどのように返りますでしょうか。
こちらでは、
fbb: インストールされているバージョン: 7.04j-8.2 候補: 7.04j-8.2
のものが入ったようです。
オフライン
わざわざインストールしていただいたみたいでありがとうございます。
こちらの結果を下記します。
-----
$ apt-cache policy fbb
fbb:
インストールされているバージョン: 7.04j-8.2
候補: 7.04j-8.2
バージョンテーブル:
*** 7.04j-8.2 0
500 http://jp.archive.ubuntu.com/ubuntu/ lucid/universe Packages
100 /var/lib/dpkg/status
-----
10.04を再インストールしか手がないでしょうか。
オフライン
大変申し訳ありません。
また、間違えていました。
設定ファイルが無いとシェルスクリプトの中で終了してしまって、バイナリにまで制御が移らないような気がしてきました。
# まだちゃんと見きれていませんが。。
適当な設定ファイルを作ったところ、こちらでもxfbbdが落ちる現象が見られました。
バイナリの方に問題があるのかも知れません。
launchpadにはそれらしいバグレポートは見つかりませんでしたが、念のためそちらでも確認いただいて、バグレポートを出して修正されるのを待っていただくしか無いかも知れません。
オフライン
真面目に見ていないので非常に微妙な提案になってしまうのですが、/etc/ax25/fbb/lang以下にあるfrancais.* ファイルの初期化時に落ちているような気配がします。
これらのファイルをどこかに移動する(あるいはもう面倒なのでsudo rm /etc/ax25/fbb/lang/francais.* する)と、なんとなく動いたりしないでしょうか。
# 正しい設定ファイルの作り方を調べてないので「Configuration error ! Giving up.」で終わるのですが、少なくともbuffer overflow detectedは出なくなりました。
どうもちゃんと動かない、という場合は、差し支えない範囲で「動きそうな設定ファイル」を準備して頂けると追求しやすいかと思います。
オフライン
> 設定ファイルが無いとシェルスクリプトの中で終了してしまって、バイナリにまで制御が移らないような気がしてきました。
> # まだちゃんと見きれていませんが。。
設定ファイルは
/etc/ax25/fbb/fbb.conf
が有れば取りあえず動くはずです。
ちょっと長くなりますがこちらの起動時の状況を書いてみます。
-----
$ /usr/sbin/fbb
Checking fbb tree.... Ok
Checking fbb configuration :
*********************************************************
* XFBB Linux daemon version 7.04j (Feb 4 2010) PID=3152
* Copyright F6FBB 1986-1999. All rights reserved.
*
* This software is in the public domain. It can be copied
* or installed for any use abiding by the laws.
*
* F6FBB (Jean-Paul ROUBELAT) declines any responsibilty
* in the use of XFBB software.
*
* This software is free of charge, but a 100 FF or 20 US$
* (or more) contribution will be appreciated.
*********************************************************
Parameters set-up
vers : FBB7.04j
call : J*****.14.JNET1.JPN.AS
ssid : 0
qral : QM****
city : *****
conf : /etc/ax25/fbb
data : /var/ax25/fbb
mess : /var/ax25/fbb/mail
comp : /var/ax25/fbb/binmail
fbbd : *,*,/var/ax25/fbb/fbbdos,*,*,*,*,*
fbbd : <*,*,/var/ax25/fbb/fbbdos,*,*,*,*,*>
0 : {*}
0 : {}
1 : {*}
1 : {}
2 : {/var/ax25/fbb/fbbdos}
2 : {C:\var\ax25\fbb\fbbdos\}
3 : {*}
3 : {}
4 : {*}
4 : {}
5 : {*}
5 : {}
6 : {*}
6 : {}
7 : {*}
7 : {}
yapp : /var/ax25/fbb/fbbdos/yapp
docs : /var/ax25/fbb/docs
name : *****
syso : *****
sysm :
impo : /var/ax25/fbb/mail/mail.in
logs : OK
test : NO
fbbf : OK 160
fbbc : OK 3
aski : OK
mask : 3616
secu : 0 4 59
warn : 255
hous : 4
time : 30 5
maxd : 0 0
loca : +9
beac : 8
scro : 1500 1500 1500
fwdh : xFBB$E $$:$R
maxb : 30000
life : 30
wpca :
zipc : 000000
unpr : 500 5 P
upba :
dwba :
pg : /usr/lib/fbb/pg
fdir : /usr/lib/fbb/filter
sdir : /usr/lib/fbb/server
tdir : /usr/lib/fbb/tool
poph :
LINUX virtual paged memory Set-up
Texts set-up
1 language buffers allocated
Init lang JAPANESE
Init lang ENGLISH
*** buffer overflow detected ***: /usr/sbin/xfbbd terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x50)[0x3b7390]
/lib/tls/i686/cmov/libc.so.6(+0xe12ca)[0x3b62ca]
/lib/tls/i686/cmov/libc.so.6(+0xe0a08)[0x3b5a08]
/lib/tls/i686/cmov/libc.so.6(_IO_default_xsputn+0x9e)[0x33eafe]
/lib/tls/i686/cmov/libc.so.6(_IO_vfprintf+0xe24)[0x312a34]
/lib/tls/i686/cmov/libc.so.6(__vsprintf_chk+0xad)[0x3b5abd]
/lib/tls/i686/cmov/libc.so.6(__sprintf_chk+0x2d)[0x3b59fd]
/usr/sbin/xfbbd[0x80585ea]
/usr/sbin/xfbbd[0x808a93a]
/usr/sbin/xfbbd[0x804e20e]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x2ebbd6]
/usr/sbin/xfbbd[0x804ac21]
======= Memory map: ========
0015d000-00178000 r-xp 00000000 08:01 1572933 /lib/ld-2.11.1.so
00178000-00179000 r--p 0001a000 08:01 1572933 /lib/ld-2.11.1.so
00179000-0017a000 rw-p 0001b000 08:01 1572933 /lib/ld-2.11.1.so
002af000-002d3000 r-xp 00000000 08:01 1590275 /lib/tls/i686/cmov/libm-2.11.1.so
002d3000-002d4000 r--p 00023000 08:01 1590275 /lib/tls/i686/cmov/libm-2.11.1.so
002d4000-002d5000 rw-p 00024000 08:01 1590275 /lib/tls/i686/cmov/libm-2.11.1.so
002d5000-00428000 r-xp 00000000 08:01 1590271 /lib/tls/i686/cmov/libc-2.11.1.so
00428000-00429000 ---p 00153000 08:01 1590271 /lib/tls/i686/cmov/libc-2.11.1.so
00429000-0042b000 r--p 00153000 08:01 1590271 /lib/tls/i686/cmov/libc-2.11.1.so
0042b000-0042c000 rw-p 00155000 08:01 1590271 /lib/tls/i686/cmov/libc-2.11.1.so
0042c000-0042f000 rw-p 00000000 00:00 0
005e7000-005ef000 r-xp 00000000 08:01 1032452 /usr/lib/libax25.so.0.0.0
005ef000-005f0000 r--p 00007000 08:01 1032452 /usr/lib/libax25.so.0.0.0
005f0000-005f1000 rw-p 00008000 08:01 1032452 /usr/lib/libax25.so.0.0.0
00813000-00830000 r-xp 00000000 08:01 1573005 /lib/libgcc_s.so.1
00830000-00831000 r--p 0001c000 08:01 1573005 /lib/libgcc_s.so.1
00831000-00832000 rw-p 0001d000 08:01 1573005 /lib/libgcc_s.so.1
0094f000-00950000 r-xp 00000000 00:00 0 [vdso]
08048000-080e2000 r-xp 00000000 08:01 1032274 /usr/sbin/xfbbd
080e2000-080e3000 r--p 00099000 08:01 1032274 /usr/sbin/xfbbd
080e3000-080e5000 rw-p 0009a000 08:01 1032274 /usr/sbin/xfbbd
080e5000-0813a000 rw-p 00000000 00:00 0
08e0b000-08e2c000 rw-p 00000000 00:00 0 [heap]
b782b000-b78ac000 r--p 00000000 08:01 1083107 /usr/lib/locale/ja_JP.utf8/LC_CTYPE
b78ac000-b78ae000 rw-p 00000000 00:00 0
b78b8000-b78b9000 rw-p 00000000 00:00 0
b78b9000-b78c0000 r--s 00000000 08:01 1036859 /usr/lib/gconv/gconv-modules.cache
b78c0000-b78c2000 rw-p 00000000 00:00 0
bff61000-bff76000 rw-p 00000000 00:00 0 [stack]
ENGLISHAborted
Configuration error ! Giving up.
-----
オフライン
> 真面目に見ていないので非常に微妙な提案になってしまうのですが、/etc/ax25/fbb/lang以下にあるfrancais.* ファイルの初期化時に落ちているような気配がします。
> これらのファイルをどこかに移動する(あるいはもう面倒なのでsudo rm /etc/ax25/fbb/lang/francais.* する)と、なんとなく動いたりしないでしょうか。
francais.*を別な場所に移動して起動してみましたが結果は変わりませんでした。
相変わらずbuffer overflow detectedです。
参考までにfbb.confを下記します。
-----
#
# FBB Set-up file
#
version = FBB7.04j
# Callsign of BBS
callsign = JA1QRZ.14.JNET1.JPN.AS
# SSID of BBS
ssid = 0
# Qra Locator of BBS
qraloc = QR06HN
# Qth of BBS
city = hogehoge
# First name of SYSOP
name = hoge
# Callsign of SYSOP
sysop = JA1QRZ
# Local time
loca = +9
# servers
server = REQDIR reqdir Directory request
#
# Optional lines
#
# Time (hour) for housekeeping (cleanup of messages)
housekeeping = 4
# Time-out for normal users / forward
timeout = 30 5
# Text for forward header (Do not change !)
fwdheader = xFBB$E $$:$R
#fbbfwd = OK 2208
#
# End of fbb.conf file
#
-----
オフライン
おそらく原因は今更ながらの 2000 年問題のように見えます.
fbb-7.04j/src/console.c の関数 aff_date で,
char cdate[19];
...中略...
#ifdef ENGLISH
sprintf (cdate, " %02d-%02d-%02d %02d:%02d",
sdate->tm_year, sdate->tm_mon + 1, sdate->tm_mday,
sdate->tm_hour, sdate->tm_min);
#else
sprintf (cdate, " %02d/%02d/%02d %02d:%02d",
sdate->tm_mday, sdate->tm_mon + 1, sdate->tm_year,
sdate->tm_hour, sdate->tm_min);
#endifcdate として " 10-08-26 12:10" の文字列を作りたいのでしょうが,
tm_year は,西暦-1900なので今年は 110, この書式指定では,
" 110-08-26 12:10" になり,1文字オーバーです.
オフライン
> おそらく原因は今更ながらの 2000 年問題のように見えます.
> fbb-7.04j/src/console.c の関数 aff_date で,
中略
> cdate として " 10-08-26 12:10" の文字列を作りたいのでしょうが,
>tm_year は,西暦-1900なので今年は 110, この書式指定では,
> " 110-08-26 12:10" になり,1文字オーバーです.
ソースの中身云々についてはさっぱり分かりませんがお話は理解できます。
そうするとアプリ側の不具合と言うことになると思いますが、だとすると8.04で
動いていて10.04になって動かないのが不思議です。
オフライン
matsu さん による投稿:
だとすると8.04で動いていて10.04になって動かないのが不思議です。
掻い摘んで表現すれば --
セキュリティ強化の結果,8.04までは見逃された不具合がプログラムを停止させる程のエラーとして検知されるようになった.
-- ということなのですが,うまく説明する自信がないので,関係ありそうな資料を提示することにします.
https://wiki.ubuntu.com/Security/Features
の Matrix によれば,8.10 では Uninplemented だった Built with Fortify Source が,9.04 からは By Default になっています.
Built with Fortify Source の説明は同じページでリンクを辿ると,
expand unbounded calls to "sprintf", "strcpy" into their "n" length-limited cousins when the size of a destination buffer is known (protects against memory overflows).
と有ります.
オフライン
> 掻い摘んで表現すれば --
> セキュリティ強化の結果,8.04までは見逃された不具合がプログラムを停止させる程のエラーとして検知されるようになった.
了解しました。私の選択肢としては
1.10.04のままfbbのBUG FIXを待つ。
2.ちょっと後ろ向きだけど8.04を再インストールして取りあえずfbbを動かす。
と言うことになりますか。
1.に付いてはマイナーな物のBUG FIXは考えられそうにないので面倒だけど2.で行くしか無さそうですね。
オフライン
einundzwanzighundertsechs による投稿:
おそらく原因は今更ながらの 2000 年問題のように見えます.
fbb-7.04j/src/console.c の関数 aff_date で,コード:
char cdate[19]; ...中略... #ifdef ENGLISH sprintf (cdate, " %02d-%02d-%02d %02d:%02d", sdate->tm_year, sdate->tm_mon + 1, sdate->tm_mday, sdate->tm_hour, sdate->tm_min); #else sprintf (cdate, " %02d/%02d/%02d %02d:%02d", sdate->tm_mday, sdate->tm_mon + 1, sdate->tm_year, sdate->tm_hour, sdate->tm_min); #endifcdate として " 10-08-26 12:10" の文字列を作りたいのでしょうが,
tm_year は,西暦-1900なので今年は 110, この書式指定では,
" 110-08-26 12:10" になり,1文字オーバーです.
の部分を、
#ifdef ENGLISH
sprintf (cdate, " %02d-%02d-%02d %02d:%02d",
sdate->tm_year%100, sdate->tm_mon + 1, sdate->tm_mday,
sdate->tm_hour, sdate->tm_min);
#else
sprintf (cdate, " %02d/%02d/%02d %02d:%02d",
sdate->tm_mday, sdate->tm_mon + 1, sdate->tm_year%100,
sdate->tm_hour, sdate->tm_min);
#endifにして実験してみたところ、xfbbd自体は落ちなくなりました。
(とは言ってもRS232Cの設定が必要なのか、なにかハードウェアが必要なのか、
RS232 ports set-up
Ports set-up
Message : Error file PORT.SYS line 4 :
でエラー終了してしまいますが。。)
ちょっとこのソフトや、おそらく、周辺機器についての知識がないと検証を続けるのが厳しい感じになってきましたが、ソースパッケージを落としてきて、ソースコードを書き換えて、ビルドしなおして、インストールすればなんとか動かせるのかも知れません。
ただ、この場合、ビルドしなおしたパッケージがレポジトリのもので上書きされなくするための正しいマナーを私は心得ておらず、申し訳ありませんが、具体的なアドバイスができないです。。
多少面倒でも、8.04の方で動くのであれば、そちらを使うのも手ですし、(エラーメッセージから推測して)RS232Cポートが認識できればよいのであれば、virtualbox上に8.04を導入して使うというのも手かと思います。
# とりえあず、ソースパッケージのビルド前に、debianフォルダに入ってdch -iしておけば上書きされなくはなります。
オフライン
> にして実験してみたところ、xfbbd自体は落ちなくなりました。
> (とは言ってもRS232Cの設定が必要なのか、なにかハードウェアが必要なのか、
> RS232 ports set-up
> Ports set-up
> Message : Error file PORT.SYS line 4 :
> でエラー終了してしまいますが。。)
port.sysのエラーで落ちるのであれば問題無さそうです。
/etc/ax25/fbb/port.sysをいじってやればたぶん正常に起動すると思います。
RS232Cは無くても動きますのでport.sysの設定次第だと思います。
> ソースパッケージを落としてきて、ソースコードを書き換えて、ビルドしなおして、インストールすればなんとか動かせるのかも知れません。
そうしたいのは山々ですが、そう言った知識が皆目ありませんので8.04を再インストールしようかと考えています。
オフライン