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

ruby-changes:20709

From: ngoto <ko1@a...>
Date: Sat, 30 Jul 2011 22:41:59 +0900 (JST)
Subject: [ruby-changes:20709] ngoto:r32757 (trunk, ruby_1_9_3): * strftime.c (NEEDS): avoid SEGV due to integer overflow in sparc-solaris2.10

ngoto	2011-07-30 22:41:45 +0900 (Sat, 30 Jul 2011)

  New Revision: 32757

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

  Log:
    * strftime.c (NEEDS): avoid SEGV due to integer overflow in sparc-solaris2.10
      and i686-linux.  fix [Bug #4456] [ruby-dev:43284]

  Modified files:
    branches/ruby_1_9_3/ChangeLog
    branches/ruby_1_9_3/strftime.c
    trunk/ChangeLog
    trunk/strftime.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32756)
+++ ChangeLog	(revision 32757)
@@ -1,3 +1,8 @@
+Sat Jul 30 22:35:50 2011  Naohisa Goto  <ngotogenome@g...>
+
+	* strftime.c (NEEDS): avoid SEGV due to integer overflow in
+	  sparc-solaris2.10 and i686-linux.  fix [Bug #4456] [ruby-dev:43284]
+
 Sat Jul 30 17:26:26 2011  Masaki Suketa <masaki.suketa@n...>
 
 	* test/win32ole/test_win32ole_variant.rb: use skip method to skip the test.
Index: strftime.c
===================================================================
--- strftime.c	(revision 32756)
+++ strftime.c	(revision 32757)
@@ -210,7 +210,7 @@
 			if (precision > 0 || flags & (BIT_OF(LOCALE_E)|BIT_OF(LOCALE_O))) \
 				goto unknown; \
 		} while (0)
-#define NEEDS(n) do if (s + (n) >= endp - 1) goto err; while (0)
+#define NEEDS(n) do if (s >= endp || (n) >= endp - s - 1) goto err; while (0)
 #define FILL_PADDING(i) do { \
 	if (!(flags & BIT_OF(LEFT)) && precision > (i)) { \
 		NEEDS(precision); \
Index: ruby_1_9_3/ChangeLog
===================================================================
--- ruby_1_9_3/ChangeLog	(revision 32756)
+++ ruby_1_9_3/ChangeLog	(revision 32757)
@@ -1,3 +1,8 @@
+Sat Jul 30 22:35:50 2011  Naohisa Goto  <ngotogenome@g...>
+
+	* strftime.c (NEEDS): avoid SEGV due to integer overflow in
+	  sparc-solaris2.10 and i686-linux.  fix [Bug #4456] [ruby-dev:43284]
+
 Sat Jul 30 14:27:00 2011  Kenta Murata  <mrkn@m...>
 
 	* backport r32754 from trunk.
Index: ruby_1_9_3/strftime.c
===================================================================
--- ruby_1_9_3/strftime.c	(revision 32756)
+++ ruby_1_9_3/strftime.c	(revision 32757)
@@ -210,7 +210,7 @@
 			if (precision > 0 || flags & (BIT_OF(LOCALE_E)|BIT_OF(LOCALE_O))) \
 				goto unknown; \
 		} while (0)
-#define NEEDS(n) do if (s + (n) >= endp - 1) goto err; while (0)
+#define NEEDS(n) do if (s >= endp || (n) >= endp - s - 1) goto err; while (0)
 #define FILL_PADDING(i) do { \
 	if (!(flags & BIT_OF(LEFT)) && precision > (i)) { \
 		NEEDS(precision); \

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

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