From 088fb2a36ecc4e264e5952bf8157ee30c935fd0a Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 6 Dec 2005 07:52:18 +0000 Subject: * gc.c (ruby_xmalloc2): change check for integer overflow. [ruby-dev:27399] * gc.c (ruby_xrealloc2): ditto. * eval.c (exec_under): avoid accessing ruby_frame->prev. [ruby-dev:27948] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9647 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- gc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index fdd42605f8..887551444a 100644 --- a/gc.c +++ b/gc.c @@ -107,7 +107,7 @@ rb_memerror(void) } void * -ruby_xmalloc(long size) +ruby_xmalloc(size_t size) { void *mem; @@ -134,17 +134,17 @@ ruby_xmalloc(long size) } void * -ruby_xmalloc2(long n, long size) +ruby_xmalloc2(size_t n, size_t size) { long len = size * n; - if (len < n || (n > 0 && len < size)) { + if (n != 0 && size != len / n) { rb_raise(rb_eArgError, "malloc: possible integer overflow"); } return ruby_xmalloc(len); } void * -ruby_xcalloc(long n, long size) +ruby_xcalloc(size_t n, size_t size) { void *mem; @@ -155,7 +155,7 @@ ruby_xcalloc(long n, long size) } void * -ruby_xrealloc(void *ptr, long size) +ruby_xrealloc(void *ptr, size_t size) { void *mem; @@ -179,10 +179,10 @@ ruby_xrealloc(void *ptr, long size) } void * -ruby_xrealloc2(void *ptr, long n, long size) +ruby_xrealloc2(void *ptr, size_t n, size_t size) { - long len = size * n; - if (len < n || (n > 0 && len < size)) { + size_t len = size * n; + if (n != 0 && size != len / n) { rb_raise(rb_eArgError, "realloc: possible integer overflow"); } return ruby_xrealloc(ptr, len); -- cgit v1.2.3