mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00

Stop reading past the end of `ivptr` array If you have code like this: ```ruby class A def initialize @a = nil @b = nil @c = nil @d = nil @e = nil end end x = A.new y = x.clone 100.times { |z| x.instance_variable_set(:"@foo#{z}", nil) } puts y.inspect ``` `x` and `y` will share `iv_index_tbl` hashes. However, the size of the hash will grow larger than the number if entries in `ivptr` in `y`. Before this commit, `rb_ivar_count` would use the size of the hash to determine how far to read in to the array, but this means that it could read past the end of the array and cause the program to segv [ruby-core:78403] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@57214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
#define RUBY_VERSION "2.2.7"
|
|
#define RUBY_RELEASE_DATE "2016-12-27"
|
|
#define RUBY_PATCHLEVEL 405
|
|
|
|
#define RUBY_RELEASE_YEAR 2016
|
|
#define RUBY_RELEASE_MONTH 12
|
|
#define RUBY_RELEASE_DAY 27
|
|
|
|
#include "ruby/version.h"
|
|
|
|
#if !defined RUBY_LIB_VERSION && defined RUBY_LIB_VERSION_STYLE
|
|
# if RUBY_LIB_VERSION_STYLE == 3
|
|
# define RUBY_LIB_VERSION STRINGIZE(RUBY_API_VERSION_MAJOR)"."STRINGIZE(RUBY_API_VERSION_MINOR)"."STRINGIZE(RUBY_API_VERSION_TEENY)
|
|
# elif RUBY_LIB_VERSION_STYLE == 2
|
|
# define RUBY_LIB_VERSION STRINGIZE(RUBY_API_VERSION_MAJOR)"."STRINGIZE(RUBY_API_VERSION_MINOR)
|
|
# endif
|
|
#endif
|
|
|
|
#if RUBY_PATCHLEVEL == -1
|
|
#define RUBY_PATCHLEVEL_STR "dev"
|
|
#else
|
|
#define RUBY_PATCHLEVEL_STR "p"STRINGIZE(RUBY_PATCHLEVEL)
|
|
#endif
|
|
|
|
#ifndef RUBY_REVISION
|
|
# include "revision.h"
|
|
#endif
|
|
#ifndef RUBY_REVISION
|
|
# define RUBY_REVISION 0
|
|
#endif
|
|
|
|
#if RUBY_REVISION
|
|
# ifdef RUBY_BRANCH_NAME
|
|
# define RUBY_REVISION_STR " "RUBY_BRANCH_NAME" "STRINGIZE(RUBY_REVISION)
|
|
# else
|
|
# define RUBY_REVISION_STR " revision "STRINGIZE(RUBY_REVISION)
|
|
# endif
|
|
#else
|
|
# define RUBY_REVISION_STR ""
|
|
#endif
|
|
|
|
# define RUBY_DESCRIPTION \
|
|
"ruby "RUBY_VERSION \
|
|
RUBY_PATCHLEVEL_STR \
|
|
" ("RUBY_RELEASE_DATE \
|
|
RUBY_REVISION_STR") " \
|
|
"["RUBY_PLATFORM"]"
|
|
# define RUBY_COPYRIGHT \
|
|
"ruby - Copyright (C) " \
|
|
STRINGIZE(RUBY_BIRTH_YEAR)"-" \
|
|
STRINGIZE(RUBY_RELEASE_YEAR)" " \
|
|
RUBY_AUTHOR
|