summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-20 17:06:08 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-20 17:06:08 +0000
commitc5a691323201ace5f5299b6914c8e1709918c521 (patch)
treefa0a072ffbfa490a5f96a554d231403eeb0dc96d /gc.c
parent1d8b1d8c3256016307af428a87835eadc5d30224 (diff)
merge revision(s) 49792: [Backport #10918]
* gc.c (id2ref): prohibit from accessing internal objects. [ruby-core:68348] [Bug #10918] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@50565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gc.c b/gc.c
index c84da503ea..b843e7bb73 100644
--- a/gc.c
+++ b/gc.c
@@ -2761,6 +2761,9 @@ id2ref(VALUE obj, VALUE objid)
if (!is_live_object(objspace, ptr)) {
rb_raise(rb_eRangeError, "%p is recycled object", p0);
}
+ if (RBASIC(ptr)->klass == 0) {
+ rb_raise(rb_eRangeError, "%p is internal object", p0);
+ }
return (VALUE)ptr;
}