[Ultramonkey-l7-users 153] Re: 32bit での 2.1.0-0 l7directord 起動時 "Range iterator outside integer range"

Back to archive index

Shinya TAKEBAYASHI makot****@kanon*****
2009年 1月 6日 (火) 11:41:12 JST


田沼 さま


  竹林です.
  今年もよろしくお願い致します.
  
> 以前に竹林さんから軽く報告されていて
> 覚えてはいたのですが再現しなかったので古いバージョンでのバグかと
> 勝手に思っていました…。すいません。
> (32 bit については 10.x.x.x と 127.0.0.1 で確認していました…)
  
  あ,これです.
  
  
> まるやまさんの C スタイルの for 文か while 文あたりで修正して
> リポジトリにコミットしておきます。

  お手数ですが,お願いします.
  直したものは stable/ultramonkey-l7/branches/v2.1.1-0 に
コミットして頂けると助かります.

----------------------------------------------------------------
Shinya TAKEBAYASHI

E-mail : makot****@kanon*****
GPG ID : FFD20D1F
GPG FP : 7B5B E0FC B785 7457 683C  47D6 5564 DDDD FFD2 0D1F
----------------------------------------------------------------


Kouhei TANUMA <tanum****@nttco*****> wrote in message <20090****@nttco*****
>
*** Subject: Re: 32bit での 2.1.0-0 l7directord 起動時 "Range iterator outside 
integer range"
***    Date: 2009/01/06 10:52:01
> まるやま 様
> 竹林 様
> 
> 田沼と申します。
> ご連絡ありがとうございます。
> 
> まるやまさんの対処で問題ありません。
> 
> 本件については real に指定した IP アドレスの処理部分のバグで
> 64 bit の場合 255.255.255.255 でも大丈夫なのですが
> 32 bit の場合 127.255.255.255 以上の IP アドレスを指定すると
> int の範囲を超えて落ちてしまいます。
> 
> 以前に竹林さんから軽く報告されていて
> 覚えてはいたのですが再現しなかったので古いバージョンでのバグかと
> 勝手に思っていました…。すいません。
> (32 bit については 10.x.x.x と 127.0.0.1 で確認していました…)
> 
> 
> また、対処については、perldoc perldiag によると
> 
> Range iterator outside integer range
>    (F) One (or both) of the numeric arguments to the range operator ".." are
> outside the range which can be represented by integers internally.  One 
possible
> workaround is to force Perl to use magical string increment by
> prepending "0" to your numbers.
> 
> ということなので、頭に 0 をつけて強制的にマジカルインクリメント、
> つまり
> 
> -    for my $int_ip ($int_ip1 .. $int_ip2) {
> +    for my $int_ip ("0$int_ip1" .. "0$int_ip2") {
> 
> こうしてやると大丈夫なようですが、多少トリッキーですので
> まるやまさんの C スタイルの for 文か while 文あたりで修正して
> リポジトリにコミットしておきます。
> 
> 
> On Mon, 05 Jan 2009 22:51:32 +0900
> Shinya TAKEBAYASHI <makot****@kanon*****> wrote:
> 
> > まるやま さま
> > 
> > 
> >   竹林です.
> >   
> >   本件,ご連絡ありがとうございます.
> >   
> >   まるやまさんの対処で動いているようであれば,取り急ぎ今のまま
> > お使いいただけますか.
> > 
> >   こちらでも試してみます.
> >   
> >   
> > // おふれこ 
> > 
> >   リリース前の版で IP アドレスを int の数値に変換するルーチン(ip_to_int)で
> > Range iterator outside integer range が出たことがあったのですが・・・
> > それと関連しているかもしれません.
> > 
> >   田沼さん,この辺どうでしたっけ.
> > 
> > ----------------------------------------------------------------
> > Shinya TAKEBAYASHI
> > 
> > E-mail(private): makot****@kanon*****
> > GPG ID : FFD20D1F
> > GPG FP : 7B5B E0FC B785 7457 683C  47D6 5564 DDDD FFD2 0D1F
> > ----------------------------------------------------------------
> > 
> > 
> > *** MARUYAMA Toshio wrote in message <20090105115219.18335.q
> > mail****@web35*****>
> > *** Subject: [Ultramonkey-l7-users 150] 32bit での 2.1.0-0 l7directord 起動
時 "
> > Range iterator outside integer range"
> > *** Date:    Mon, 5 Jan 2009 20:52:19 +0900 (JST)
> > > まるやまと申します。
> > > 
> > > UltraMonkey-L7 2.1.0-0 がリリースされたということで、
> > > 2.0.0 からの乗り換えを試したところ、
> > > l7directord の起動で、以下のエラーが出て起動できませんでした。
> > > 
> > > # /etc/init.d/l7directord start
> > > Starting l7directord ...  Range iterator outside integer range at
> > > /usr/sbin/l7directord line 1167, <$_[...]> line 33.
> > > 
> > >                                                            [FAILED]
> > > 
> > > 環境は、32bit CentOS 5.2 です。
> > > 
> > > 
> > > l7directord.cf では以下のようにしています。
> > > 
> > > virtual=192.168.0.226:9000
> > >     real=192.168.0.226:80 masq 1
> > >     real=192.168.0.222:80 masq 1
> > > 
> > > 
> > > 以下の修正をして、何とか動かしています。
> > > 問題無いでしょうか。
> > > 
> > > --- l7directord.orig    2008-12-16 08:02:10.000000000 +0900
> > > +++ l7directord    2009-01-05 20:34:25.000000000 +0900
> > > @@ -1164,7 +1164,8 @@
> > >      }
> > >  
> > >      my @reals = ();
> > > -    for my $int_ip ($int_ip1 .. $int_ip2) {
> > > +    # for my $int_ip ($int_ip1 .. $int_ip2) {
> > > +    for  ( my $int_ip = $int_ip1 ; $int_ip <=  $int_ip2 ; $int_ip++ ) {
> > >          my %new_real = %real;
> > >          $new_real{server}{ip  } = int_to_ip($int_ip);
> > >          $new_real{server}{port} = $resolved_port;
> > > 
> > > 
> > > 以上よろしくお願いします。
> > > 
> > > --------------------------------------
> > > Power up the Internet with Yahoo! Toolbar.
> > > http://pr.mail.yahoo.co.jp/toolbar/
> 
> 





Ultramonkey-l7-users メーリングリストの案内
Back to archive index