ruby-changes:2859
From: ko1@a...
Date: 20 Dec 2007 09:43:56 +0900
Subject: [ruby-changes:2859] matz - Ruby:r14350 (trunk): * bignum.c (big2str_orig): access beyond memory region cause crash
matz 2007-12-20 09:43:39 +0900 (Thu, 20 Dec 2007) New Revision: 14350 Modified files: trunk/ChangeLog trunk/bignum.c Log: * bignum.c (big2str_orig): access beyond memory region cause crash on interrupt. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32651]. [ruby-dev:32641] http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14350&r2=14349 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bignum.c?r1=14350&r2=14349 Index: ChangeLog =================================================================== --- ChangeLog (revision 14349) +++ ChangeLog (revision 14350) @@ -1,3 +1,9 @@ +Thu Dec 20 09:42:11 2007 Yukihiro Matsumoto <matz@r...> + + * bignum.c (big2str_orig): access beyond memory region cause crash + on interrupt. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in + [ruby-dev:32651]. [ruby-dev:32641] + Thu Dec 20 09:06:54 2007 Yukihiro Matsumoto <matz@r...> * string.c (rb_str_index): wrong starting position. Index: bignum.c =================================================================== --- bignum.c (revision 14349) +++ bignum.c (revision 14350) @@ -837,12 +837,12 @@ while (k--) { ptr[--j] = ruby_digitmap[num % base]; num /= base; - if (!trim && j <= 0) break; + if (j <= 0) break; if (trim && i == 0 && num == 0) break; } } if (trim) { - while (ptr[j] == '0') j++; + while (j < len && ptr[j] == '0') j++; MEMMOVE(ptr, ptr + j, char, len - j); len -= j; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml