From 4a5a6f4a2c6a20fb61ab834655fdae8ba4879196 Mon Sep 17 00:00:00 2001 From: kosaki Date: Sun, 7 Aug 2011 14:40:07 +0000 Subject: merge revision(s) 32885: * time.c (rb_strftime_alloc): raise ERANGE if width is too large. Patch by Nobuyoshi Nakada. [Bug #4457] [ruby-dev:43285] * test/ruby/test_time.rb (class TestTime): add a test for the above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- time.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'time.c') diff --git a/time.c b/time.c index b2e3448610..5122466675 100644 --- a/time.c +++ b/time.c @@ -4326,8 +4326,12 @@ rb_strftime_alloc(char **buf, const char *format, * if the buffer is 1024 times bigger than the length of the * format string, it's not failing for lack of room. */ - if (len > 0 || size >= 1024 * flen) break; + if (len > 0) break; xfree(*buf); + if (size >= 1024 * flen) { + rb_sys_fail(format); + break; + } } return len; } -- cgit v1.2.3