diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-30 18:53:41 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-30 18:53:41 +0000 |
commit | 3d38ba877eb14cc4d6b711e41d64953b366a502b (patch) | |
tree | 291f50b17c2feb15465669f146c4a83768af6f17 | |
parent | 6eae4ecb0b4a6e2fb668e2471c30e8896e585c85 (diff) |
* vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t.
patched by Peter Weldon <peter.weldon AT null.net>
[ruby-core:33985]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | test/ruby/test_time.rb | 3 | ||||
-rw-r--r-- | vsnprintf.c | 2 |
3 files changed, 10 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Fri Dec 31 03:23:26 2010 NARUSE, Yui <naruse@ruby-lang.org> + + * vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t. + patched by Peter Weldon <peter.weldon AT null.net> + [ruby-core:33985] + Fri Dec 31 03:00:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com> * Makefile.in: remove unnecessary semicolons. diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 8c96a0d2cd..ec5395092f 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -634,6 +634,9 @@ class TestTime < Test::Unit::TestCase t.strftime("%m/%d/%Y %l:%M:%S.%9N")) assert_equal("03/14/1592 6:53:58.97932384", t.strftime("%m/%d/%Y %l:%M:%S.%8N")) + + # [ruby-core:33985] + assert_equal("3000000000", Time.at(3000000000).strftime('%s')) end def test_delegate diff --git a/vsnprintf.c b/vsnprintf.c index 7576b4c5b4..648904f795 100644 --- a/vsnprintf.c +++ b/vsnprintf.c @@ -368,7 +368,7 @@ static char * BSD__uqtoa(register u_quad_t val, char *endp, int base, int octzero, const char *xdigs) { register char *cp = endp; - register long sval; + register quad_t sval; /* * Handle the three cases separately, in the hope of getting |