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

ruby-changes:18628

From: nobu <ko1@a...>
Date: Tue, 25 Jan 2011 08:28:28 +0900 (JST)
Subject: [ruby-changes:18628] Ruby:r30652 (trunk): * string.c (rb_str_resize): get rid of out-of-bound access.

nobu	2011-01-25 08:28:22 +0900 (Tue, 25 Jan 2011)

  New Revision: 30652

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

  Log:
    * string.c (rb_str_resize): get rid of out-of-bound access.

  Modified files:
    trunk/ChangeLog
    trunk/string.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30651)
+++ ChangeLog	(revision 30652)
@@ -1,3 +1,7 @@
+Tue Jan 25 08:28:19 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_str_resize): get rid of out-of-bound access.
+
 Tue Jan 25 07:48:22 2011  Kazuhiro NISHIYAMA  <zn@m...>
 
 	* test/ruby/test_thread.rb: remove unused variables.
Index: string.c
===================================================================
--- string.c	(revision 30651)
+++ string.c	(revision 30652)
@@ -1748,7 +1748,8 @@
 	else if (len <= RSTRING_EMBED_LEN_MAX) {
 	    char *ptr = RSTRING(str)->as.heap.ptr;
 	    STR_SET_EMBED(str);
-	    if (slen > 0) MEMCPY(RSTRING(str)->as.ary, ptr, char, len);
+	    if (slen > len) slen = len;
+	    if (slen > 0) MEMCPY(RSTRING(str)->as.ary, ptr, char, slen);
 	    RSTRING(str)->as.ary[len] = '\0';
 	    STR_SET_EMBED_LEN(str, len);
 	    if (independent) xfree(ptr);

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

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