mendex2.6fにおけるバッファオーバーフロー

mendex2.6fにおけるバッファオーバーフロー

- 匿 名 の投稿
返信数: 13
mendex2.6fを使って索引をつくろうとしているのですが、
mendex -f -U sample.idx
を実行するとバッファオーバーフローが発生して途中で終了してしまいます。
OSはUbuntu14.04を使っています。何が原因なのでしょうか。よろしくお願いします。

コンソールの出力は以下の様になりました。
This is mendex version 2.6f [14-Aug-2009] (utf8.euc).
Scanning input file sample.idx....done (496 entries accepted, 0 rejected).
496 entries accepted, 0 rejected.
Sorting index....done(4545 comparisons).
Sorting pages....done(33 comparisons).
Making index file.*** buffer overflow detected ***: mendex terminated

匿 名 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- Akira Kakuto の投稿
*** buffer overflow detected ***: mendex terminated
これはシステムライブラリの出力。

固定長バッファを用いているので,何等かの原因で
バッファあふれが起こっているのではないかと思われます。

sample.idx があると助かると思います。
Akira Kakuto への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 匿 名 の投稿
sample.idx
https://www.dropbox.com/s/h6hy32w9pxv5u4x/sample.idx?dl=0

よろしくお願いいたします。
匿 名 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 奥村 晴彦 の投稿
バッファオーバーフローと聞いて,悪用できる脆弱性があるとまずいと思ってやってみましたが,うちでは問題ないようです。

$ mendex -f -U sample.idx
This is mendex version 2.6f [14-Aug-2009] (utf8.uptex) (TeX Live 2014).
Scanning input file sample.idx....done (496 entries accepted, 0 rejected).
496 entries accepted, 0 rejected.
Sorting index....done(4545 comparisons).
Sorting pages....done(33 comparisons).
Making index file....done.
0 warnings, written in sample.ilg.
Output written in sample.ind.

いずれにしても,もしそういうことが起こるなら,ちょっと心配です(うちはMacです)。
匿 名 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- Akira Kakuto の投稿
私のところ(Windows)では,以下のように
異常なく終了してします。
どなたか,Linux でのテストをお願いします。

This is mendex version 2.6f [14-Aug-2009] (utf8.uptex) (TeX Live 2014).
Scanning input file sample.idx.(guessed encoding: UTF-8 = utf8)...done (496 entries accepted, 0 rejected).
496 entries accepted, 0 rejected.
Sorting index....done(4545 comparisons).
Sorting pages....done(33 comparisons).
Making index file....done.
0 warnings, written in sample.ilg.
Output written in sample.ind.
匿 名 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 奥村 晴彦 の投稿
Linux (CentOS) でやってみました:

$ mendex -f -U sample.idx
This is mendex version 2.6f [14-Aug-2009] (utf8.uptex) (TeX Live 2014).
Scanning input file sample.idx....done (496 entries accepted, 0 rejected).
496 entries accepted, 0 rejected.
Sorting index....done(4545 comparisons).
Sorting pages....done(33 comparisons).
Making index file....done.
0 warnings, written in sample.ilg.
Output written in sample.ind.

問題ないですね。
奥村 晴彦 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 匿 名 の投稿
お二人が使ってらっしゃるmendexと私が使っているmendexが違うのでしょうか?

こちらの出力結果が
This is mendex version 2.6f [14-Aug-2009] (utf8.euc).
なのに対して、お二人の出力結果が
This is mendex version 2.6f [14-Aug-2009] (utf8.uptex) (TeX Live 2014)
と違います。
匿 名 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 奥村 晴彦 の投稿
Ubuntuのはapt-getで入れたものでしょうか。これがどのような素性のものかよくわかりません。角藤先生と私のは本家のTeX Live 2014です。
奥村 晴彦 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 和田 勇 の投稿
ubuntu 14.04 で TeXLive 2014 を network install したものではエラーになりませんでしたが、 apt-get でインストールしたものではエラーになります。
ちょっと長くなりますが、バックトレースが表示されましたので添付します。

This is mendex version 2.6f [14-Aug-2009] (utf8.euc).
Scanning input file sample.idx....done (496 entries accepted, 0 rejected).
496 entries accepted, 0 rejected.
Sorting index....done(4545 comparisons).
Sorting pages....done(33 comparisons).
Making index file.*** buffer overflow detected ***: mendex terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7338f)[0x7f16f235c38f]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f16f23f3c9c]
/lib/x86_64-linux-gnu/libc.so.6(+0x109b60)[0x7f16f23f2b60]
/lib/x86_64-linux-gnu/libc.so.6(+0x10927b)[0x7f16f23f227b]
/lib/x86_64-linux-gnu/libc.so.6(__snprintf_chk+0x78)[0x7f16f23f2198]
mendex[0x4056f0]
mendex[0x40623d]
mendex[0x401a43]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f16f230aec5]
mendex[0x402303]
======= Memory map: ========
00400000-0040b000 r-xp 00000000 08:01 398988                             /usr/bin/mendex
0060a000-0060b000 r--p 0000a000 08:01 398988                             /usr/bin/mendex
0060b000-0061a000 rw-p 0000b000 08:01 398988                             /usr/bin/mendex
0061a000-0061f000 rw-p 00000000 00:00 0 
014d8000-0183c000 rw-p 00000000 00:00 0                                  [heap]
7f16f20d3000-7f16f20e9000 r-xp 00000000 08:01 397931                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7f16f20e9000-7f16f22e8000 ---p 00016000 08:01 397931                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7f16f22e8000-7f16f22e9000 rw-p 00015000 08:01 397931                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7f16f22e9000-7f16f24a4000 r-xp 00000000 08:01 411983                     /lib/x86_64-linux-gnu/libc-2.19.so
7f16f24a4000-7f16f26a3000 ---p 001bb000 08:01 411983                     /lib/x86_64-linux-gnu/libc-2.19.so
7f16f26a3000-7f16f26a7000 r--p 001ba000 08:01 411983                     /lib/x86_64-linux-gnu/libc-2.19.so
7f16f26a7000-7f16f26a9000 rw-p 001be000 08:01 411983                     /lib/x86_64-linux-gnu/libc-2.19.so
7f16f26a9000-7f16f26ae000 rw-p 00000000 00:00 0 
7f16f26ae000-7f16f26c3000 r-xp 00000000 08:01 399903                     /usr/lib/libkpathsea.so.6.1.1
7f16f26c3000-7f16f28c2000 ---p 00015000 08:01 399903                     /usr/lib/libkpathsea.so.6.1.1
7f16f28c2000-7f16f28c3000 r--p 00014000 08:01 399903                     /usr/lib/libkpathsea.so.6.1.1
7f16f28c3000-7f16f28c4000 rw-p 00015000 08:01 399903                     /usr/lib/libkpathsea.so.6.1.1
7f16f28c4000-7f16f28c7000 rw-p 00000000 00:00 0 
7f16f28c7000-7f16f28d1000 r-xp 00000000 08:01 398215                     /usr/lib/libptexenc.so.1.3.1
7f16f28d1000-7f16f2ad0000 ---p 0000a000 08:01 398215                     /usr/lib/libptexenc.so.1.3.1
7f16f2ad0000-7f16f2ad1000 r--p 00009000 08:01 398215                     /usr/lib/libptexenc.so.1.3.1
7f16f2ad1000-7f16f2ad2000 rw-p 0000a000 08:01 398215                     /usr/lib/libptexenc.so.1.3.1
7f16f2ad2000-7f16f2af5000 r-xp 00000000 08:01 411980                     /lib/x86_64-linux-gnu/ld-2.19.so
7f16f2c9c000-7f16f2cde000 rw-p 00000000 00:00 0 
7f16f2cef000-7f16f2cf4000 rw-p 00000000 00:00 0 
7f16f2cf4000-7f16f2cf5000 r--p 00022000 08:01 411980                     /lib/x86_64-linux-gnu/ld-2.19.so
7f16f2cf5000-7f16f2cf6000 rw-p 00023000 08:01 411980                     /lib/x86_64-linux-gnu/ld-2.19.so
7f16f2cf6000-7f16f2cf7000 rw-p 00000000 00:00 0 
7fff5af61000-7fff5af95000 rw-p 00000000 00:00 0                          [stack]
7fff5afdf000-7fff5afe1000 r-xp 00000000 00:00 0                          [vdso]
7fff5afe1000-7fff5afe3000 r--p 00000000 00:00 0                          [vvar]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall
匿 名 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- Akira Kakuto の投稿
> こちらの出力結果が
> This is mendex version 2.6f [14-Aug-2009] (utf8.euc).
> なのに対して、お二人の出力結果が
> This is mendex version 2.6f [14-Aug-2009] (utf8.uptex) (TeX Live 2014)

古いものをお使いのようです。現在は -U オプションの
場合は,内部 euc ではなくて 内部 uptex (~utf8)
となっています。
Akira Kakuto への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 匿 名 の投稿
apt-getを使わずにインストールしてみたいと思います。
ありがとうございました。
匿 名 への返信

Re: mendex2.6fにおけるバッファオーバーフロー

- 匿 名 の投稿
でびまるです。もう遅いでしょうが Ubuntu 14.10 だと問題ないようです。
$ cat /etc/issue.net
Ubuntu 14.10

$ mendex -f -U sample.idx
This is mendex version 2.6f [14-Aug-2009] (utf8.uptex) (TeX Live 2014).
Scanning input file sample.idx....done (496 entries accepted, 0 rejected).
496 entries accepted, 0 rejected.
Sorting index....done(4545 comparisons).
Sorting pages....done(33 comparisons).
Making index file....done.
0 warnings, written in sample.ilg.
Output written in sample.ind.

参考まで。