From: nobu.nokada@... Date: 2002-10-17T12:02:38+09:00 Subject: Re: Marshaling with ARGF Hi, At Thu, 17 Oct 2002 11:33:09 +0900, nobu.nokada@softhome.net wrote: > Dirty hack. Oops, forgot to flush at the end and propagate taintness. --- marshal.c~ Thu Oct 17 11:31:20 2002 +++ marshal.c Thu Oct 17 11:52:57 2002 @@ -109,4 +109,5 @@ w_byten(s, n, arg) rb_str_buf_cat(buf, s, n); if (arg->dest && RSTRING(buf)->len >= BUFSIZ) { + if (arg->taint) OBJ_TAINT(buf); rb_io_write(arg->dest, buf); rb_str_resize(buf, 0); @@ -566,4 +567,8 @@ dump(arg) { w_object(arg->obj, arg->arg, arg->limit); + if (arg->arg->dest) { + rb_io_write(arg->arg->dest, arg->arg->str); + rb_str_resize(arg->arg->str, 0); + } return 0; } @@ -747,4 +752,5 @@ r_bytes0(len, arg) Check_Type(str, T_STRING); if (RSTRING(str)->len != len) goto too_short; + if (OBJ_TAINTED(str)) arg->taint = Qtrue; } else { @@ -1217,5 +1223,5 @@ marshal_load(argc, argv) } else { - arg.taint = OBJ_TAINTED(port); /* original taintedness */ + arg.taint = Qfalse; arg.fp = 0; arg.ptr = (char *)port; -- Nobu Nakada