[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30292] Re: cgi.rbのunescapeHTML処理

From: Tietew <tietew+ruby-dev@...>
Date: 2007-02-06 13:37:32 UTC
List: ruby-dev #30292
On Tue, 6 Feb 2007 20:59:49 +0900
In article <45C86DA7.6050701@gmail.com>
[[ruby-dev:30289] cgi.rbのunescapeHTML処理]
Keiji Yoshimi <walf443@gmail.com> wrote:

> CGI.unescapeHTMLを使ったときにエスケープされていない&が単体で存在したときに
> その直後にあるHTMLエンティティが影響を受けて変換されないようです。
 :
> -    string.gsub(/&(.*?);/n) do
> +    string.gsub(/&([a-zA-Z0-9]*?);/n) do

これだと &#32; とか &#x20; とかが unescape されなくなってまずい
と思います。

というか &AMP; とかはinvalid なので本当はこんな感じじゃないかな
あ。

Index: lib/cgi.rb
===================================================================
--- lib/cgi.rb  (リビジョン 11573)
+++ lib/cgi.rb  (作業コピー)
@@ -367,13 +367,13 @@
   #   CGI::unescapeHTML("Usage: foo &quot;bar&quot; &lt;baz&gt;")
   #      # => "Usage: foo \"bar\" <baz>"
   def CGI::unescapeHTML(string)
-    string.gsub(/&(.*?);/n) do
+    string.gsub(/&(amp|quot|gt|lt|\#[0-9]+|\#x[0-9A-Fa-f]+);/n) do
       match = $1.dup
       case match
-      when /\Aamp\z/ni           then '&'
-      when /\Aquot\z/ni          then '"'
-      when /\Agt\z/ni            then '>'
-      when /\Alt\z/ni            then '<'
+      when 'amp'                 then '&'
+      when 'quot'                then '"'
+      when 'gt'                  then '>'
+      when 'lt'                  then '<'
       when /\A#0*(\d+)\z/n       then
         if Integer($1) < 256
           Integer($1).chr



—[ 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


In This Thread