From 9334597b11de6f792ef458ae88ff55f1415d64a7 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 1 Mar 2015 02:18:00 +0000 Subject: [PATCH] gc.c: hide internal objects * gc.c (id2ref): prohibit from accessing internal objects. [ruby-core:68348] [Bug #10918] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ gc.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5d8b46c31d..acee9ae225 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Mar 1 11:17:56 2015 Nobuyoshi Nakada + + * gc.c (id2ref): prohibit from accessing internal objects. + [ruby-core:68348] [Bug #10918] + Sun Mar 1 09:06:11 2015 Tanaka Akira * lib/time.rb (strptime): Support %s.%N. 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; }