From: Tietew Date: 2001-07-05T22:54:33+09:00 Subject: [ruby-dev:13755] String#each_line with tainted string (Re: Kconv(NKF) with tainted strings) Tietew です。 On Thu, 5 Jul 2001 20:41:26 +0900 In article <20010705201815.2746.TIETEW@tietew.net> Subject: [ruby-dev:13754] Kconv(NKF) with tainted strings Tietew wrote: > Kconv(NKF) が汚染を取り除いてしまうようですが,これはまずくないです > か? : > eRuby で ($SAFE=1) Net::HTTP でとってきた文字列を Kconv にかけて > eval しても SecurityError にならないのでおかしいなと思って調べたら, やっぱりならないのでおかしいと思ったら,String#each_line もみたいで す。 Index: string.c =================================================================== RCS file: /src/ruby/string.c,v retrieving revision 1.50.2.9 diff -u -2 -r1.50.2.9 string.c --- string.c 2001/05/25 15:01:06 1.50.2.9 +++ string.c 2001/07/05 13:29:58 @@ -2332,4 +2332,5 @@ rb_memcmp(RSTRING(rs)->ptr, p-rslen, rslen) == 0)) { line = rb_str_new(s, p - s); + OBJ_INFECT(line, str); rb_yield(line); if (RSTRING(str)->ptr != ptr || RSTRING(str)->len != len) Index: ext/nkf/nkf.c =================================================================== RCS file: /src/ruby/ext/nkf/nkf.c,v retrieving revision 1.5 diff -u -2 -r1.5 nkf.c --- ext/nkf/nkf.c 1999/10/20 07:10:23 1.5 +++ ext/nkf/nkf.c 2001/07/05 13:29:58 @@ -81,4 +81,5 @@ RSTRING(dst)->ptr[output_ctr] = '\0'; RSTRING(dst)->len = output_ctr; + OBJ_INFECT(dst, src); return dst; —[ Tietew ]———————————————————————————— メ : tietew@tietew.net / tietew@raug.net / tietew@masuclub.net ホペ: http://www.tietew.net/ Tietew Windows Lab. http://www.masuclub.net/ 鱒倶楽部 指紋: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA