From: Shugo Maeda Date: 2002-07-10T16:11:48+09:00 Subject: [ruby-dev:17687] resolv.rb with $SAFE==1 前田です。 resolv.rbを$SAFE==1で利用しようとするとSecurityErrorが発生してし まいます。 resolv.confなどのファイルから読み込んだ文字列をuntaintするように してはどうでしょうか。 設定ファイルのパスが汚染されていれば、設定ファイルをopenした時点 でSecurityErrorが発生するので、問題はないように思います。 一応パッチを添付します。 -- 前田 修吾 --- resolv.rb.orig Wed Jul 10 16:02:47 2002 +++ resolv.rb Wed Jul 10 16:05:44 2002 @@ -284,12 +284,15 @@ line.sub!(/#.*/, '') addr, hostname, *aliases = line.split(/\s+/) next unless addr + addr.untaint + hostname.untaint @addr2name[addr] = [] unless @addr2name.include? addr @addr2name[addr] << hostname @addr2name[addr] += aliases @name2addr[hostname] = [] unless @name2addr.include? hostname @name2addr[hostname] << addr aliases.each {|n| + n.untaint @name2addr[n] = [] unless @name2addr.include? n @name2addr[n] << addr } @@ -689,6 +692,9 @@ f.each {|line| line.sub!(/[#;].*/, '') keyword, *args = line.split(/\s+/) + args.each { |arg| + arg.untaint + } next unless keyword case keyword when 'nameserver'