From: Urabe Shyouhei Date: 2008-06-26T17:55:54+09:00 Subject: [ruby-dev:35247] Re: [ruby-list:45128] Re: Ruby 1.9.0/1.8.7/1.8.6/1.8.5 new releases (Security Fix) This is a multi-part message in MIME format. --------------090303000107080709080203 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 卜部です。-devに振ります。ひょっとしてこんなパッチでSEGVのほうはおさまっ たりしませんでしょうか? --------------090303000107080709080203 Content-Type: text/x-diff; name="Module#dup.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="Module#dup.patch" Index: class.c =================================================================== --- class.c (revision 17576) +++ class.c (working copy) @@ -62,10 +62,7 @@ NODE *fbody = body->nd_body; if (fbody && nd_type(fbody) == NODE_SCOPE) { - VALUE cref = data->klass ? - (VALUE)NEW_NODE(NODE_CREF,data->klass,0,fbody->nd_rval) : - fbody->nd_rval; - fbody = NEW_NODE(NODE_SCOPE, fbody->nd_tbl, cref, fbody->nd_next); + fbody = rb_copy_node_scope(fbody, ruby_cref); } st_insert(data->tbl, mid, (st_data_t)NEW_METHOD(fbody, body->nd_noex)); return ST_CONTINUE; Index: ChangeLog =================================================================== --- ChangeLog (revision 17576) +++ ChangeLog (working copy) @@ -1,3 +1,14 @@ +Thu Jun 26 17:49:42 2008 URABE Shyouhei + + * class.c (clone_method): use rb_copy_node_scope. + fixed [ruby-list:45102] + fixed [ruby-core:17393] + +Thu Jun 26 17:47:01 2008 Akinori MUSHA + + * eval.c (rb_copy_node_scope), node.h: Rename from copy_node_scope + and export. + Tue Jun 24 15:38:52 2008 Masatoshi SEKI * lib/erb.rb (ERB::Compiler::TrimScanner#explicit_trim_line): Fix Index: eval.c =================================================================== --- eval.c (revision 17576) +++ eval.c (working copy) @@ -2239,8 +2239,8 @@ return mod; } -static NODE* -copy_node_scope(node, rval) +NODE * +rb_copy_node_scope(node, rval) NODE *node; NODE *rval; { @@ -3948,7 +3948,7 @@ noex |= NOEX_NOSUPER; } - defn = copy_node_scope(node->nd_defn, ruby_cref); + defn = rb_copy_node_scope(node->nd_defn, ruby_cref); rb_add_method(ruby_class, node->nd_mid, defn, noex); if (scope_vmode == SCOPE_MODFUNC) { rb_add_method(rb_singleton_class(ruby_class), @@ -3984,7 +3984,7 @@ rb_warning("redefine %s", rb_id2name(node->nd_mid)); } } - defn = copy_node_scope(node->nd_defn, ruby_cref); + defn = rb_copy_node_scope(node->nd_defn, ruby_cref); rb_add_method(klass, node->nd_mid, defn, NOEX_PUBLIC|(body?body->nd_noex&NOEX_UNDEF:0)); result = Qnil; Index: node.h =================================================================== --- node.h (revision 17576) +++ node.h (working copy) @@ -371,6 +371,7 @@ #define RUBY_EVENT_ALL 0xff typedef void (*rb_event_hook_func_t) _((rb_event_t,NODE*,VALUE,ID,VALUE)); +NODE *rb_copy_node_scope _((NODE *, NODE *)); void rb_add_event_hook _((rb_event_hook_func_t,rb_event_t)); int rb_remove_event_hook _((rb_event_hook_func_t)); --------------090303000107080709080203--