diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-10 15:16:32 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-10 15:16:32 +0000 |
commit | d85b7f16d054a84806e51bf134ca38bda694c667 (patch) | |
tree | 4b5fdcb8b482c89995cdce2925bcfd54ea04d3e9 /random.c | |
parent | cb5ae2dfcb4c30351071e92f7820ade56bef409c (diff) | |
download | ruby-d85b7f16d054a84806e51bf134ca38bda694c667.tar.gz ruby-d85b7f16d054a84806e51bf134ca38bda694c667.tar.xz ruby-d85b7f16d054a84806e51bf134ca38bda694c667.zip |
* random.c (rand_init): got rid of buffer overflow.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'random.c')
-rw-r--r-- | random.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -253,11 +253,11 @@ rand_init(struct MT *mt, VALUE vseed) } len = (len + 3) / 4; /* number of 32bit words */ buf = ALLOC_N(unsigned int, len); /* allocate longs for init_by_array */ - memset(buf, 0, len * sizeof(long)); + memset(buf, 0, len * sizeof(int)); if (FIXNUM_P(seed)) { - buf[0] = (unsigned int)(FIX2ULONG(seed) & 0xffffffff); + buf[0] = (unsigned int)(FIX2ULONG(seed) & 0xffffffff); #if SIZEOF_LONG > 4 - buf[1] = (unsigned int)(FIX2ULONG(seed) >> 32); + buf[1] = (unsigned int)(FIX2ULONG(seed) >> 32); #endif } else { @@ -322,7 +322,7 @@ fill_random_seed(unsigned int seed[DEFAULT_SEED_CNT]) seed[0] ^= tv.tv_usec; seed[1] ^= (unsigned int)tv.tv_sec; #if SIZEOF_TIME_T > SIZEOF_INT - seed[1] ^= (unsigned int)(tv.tv_sec >> SIZEOF_INT * CHAR_BIT); + seed[0] ^= (unsigned int)(tv.tv_sec >> SIZEOF_INT * CHAR_BIT); #endif seed[2] ^= getpid() ^ (n++ << 16); seed[3] ^= (unsigned int)(VALUE)&seed; |