[前][次][番号順一覧][スレッド一覧]

ruby-changes:12793

From: nobu <ko1@a...>
Date: Thu, 13 Aug 2009 15:37:58 +0900 (JST)
Subject: [ruby-changes:12793] Ruby:r24521 (trunk): * regenc.c (onigenc_strlen_null, onigenc_str_bytelen_null): fixed

nobu	2009-08-13 15:37:39 +0900 (Thu, 13 Aug 2009)

  New Revision: 24521

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24521

  Log:
    * regenc.c (onigenc_strlen_null, onigenc_str_bytelen_null): fixed
      infinite loop for wide encodings.  reported by Ralf Junker at
      [ruby-core:24892].  [ruby-core:24904]

  Modified files:
    trunk/ChangeLog
    trunk/regenc.c

Index: regenc.c
===================================================================
--- regenc.c	(revision 24520)
+++ regenc.c	(revision 24521)
@@ -136,7 +136,7 @@
 {
   int n = 0;
   UChar* p = (UChar* )s;
-  UChar* e = p + strlen((const char *)s);
+  UChar* e;
 
   while (1) {
     if (*p == '\0') {
@@ -152,6 +152,7 @@
       }
       if (len == 1) return n;
     }
+    e = p + ONIGENC_MBC_MAXLEN(enc);
     p += ONIGENC_MBC_ENC_LEN(enc, p, e);
     n++;
   }
@@ -162,7 +163,7 @@
 {
   UChar* start = (UChar* )s;
   UChar* p = (UChar* )s;
-  UChar* e = p + strlen((const char *)s);
+  UChar* e;
 
   while (1) {
     if (*p == '\0') {
@@ -178,6 +179,7 @@
       }
       if (len == 1) return (int )(p - start);
     }
+    e = p + ONIGENC_MBC_MAXLEN(enc);
     p += ONIGENC_MBC_ENC_LEN(enc, p, e);
   }
 }
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24520)
+++ ChangeLog	(revision 24521)
@@ -1,3 +1,9 @@
+Thu Aug 13 15:37:33 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* regenc.c (onigenc_strlen_null, onigenc_str_bytelen_null): fixed
+	  infinite loop for wide encodings.  reported by Ralf Junker a
+	  [ruby-core:24892].  [ruby-core:24904]
+
 Wed Aug 12 21:07:46 2009  NAKAMURA Usaku  <usa@r...>
 
 	* ext/socket/extconf.rb: if ipv6 is enabled, the version of Windows

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]