Bug #5913

CGI.escape cannot escape a string with invalid byte sequence.

Added by mrkn (Kenta Murata) 4 months ago. Updated 4 months ago.

[ruby-dev:45139]
Status:Closed Start date:01/20/2012
Priority:Normal Due date:
Assignee:mrkn (Kenta Murata) % Done:

0%

Category:lib
Target version:2.0.0
ruby -v:ruby 2.0.0dev (2012-01-20 trunk 34342) [x86_64-darwin11.2.0]

Description

不正なバイト列を持つ文字列を CGI.escape に渡すと ArgumentError が起きます。 $ .prefix/bin/ruby -rcgi -ve 'p CGI.escape("\xC0<<".force_encoding("UTF-8"))' ruby 2.0.0dev (2012-01-20 trunk 34342) [x86_64-darwin11.2.0] /Users/kenta-murata/work/ruby.git/.prefix/lib/ruby/2.0.0/cgi/util.rb:7:in `gsub': invalid byte sequence in UTF-8 (ArgumentError) from /Users/kenta-murata/work/ruby.git/.prefix/lib/ruby/2.0.0/cgi/util.rb:7:in `escape' from -e:1:in `<main>' この振舞いがバグなら、このパッチで修正可能です https://gist.github.com/1646048

History

Updated by naruse (Yui NARUSE) 4 months ago

バグじゃないかと思います。 パッチについては、String#valid_encoding? は文字列スキャンが走るので、 常時 ASCII-8BIT を設定して戻したほうがいいんじゃないかと思います。

Updated by mrkn (Kenta Murata) 4 months ago

新しいパッチを作りました。 https://gist.github.com/1646162 これで問題なければ、コミットします。良いですか?

Updated by xibbar (Takeyuki Fujioka) 4 months ago

はい、お願いします。

Updated by mrkn (Kenta Murata) 4 months ago

  • Status changed from Assigned to Closed
  • Assignee changed from xibbar (Takeyuki Fujioka) to mrkn (Kenta Murata)
r34346 で修正しました。

Also available in: Atom PDF