mirror of
https://github.com/ruby/ruby.git
synced 2025-09-19 18:43:59 +02:00
merge revision(s) 57501,58576: [Backport #13539]
escape.c: check argument * ext/cgi/escape/escape.c (optimized_unescape): check accept_charset encoding argument. share `@@accept_charset` * lib/cgi/{core,util}.rb: include CGI::Util not only extending, to share `@@accept_charset` class variable, so that it is always accessible. [ruby-core:80986] [Bug #13539] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
61277d473c
commit
b2c7e9741e
5 changed files with 26 additions and 4 deletions
|
@ -252,7 +252,8 @@ optimized_unescape(VALUE str, VALUE encoding)
|
||||||
long i, len, beg = 0;
|
long i, len, beg = 0;
|
||||||
VALUE dest = 0;
|
VALUE dest = 0;
|
||||||
const char *cstr;
|
const char *cstr;
|
||||||
int cr, origenc, encidx = rb_to_encoding_index(encoding);
|
rb_encoding *enc = rb_to_encoding(encoding);
|
||||||
|
int cr, origenc, encidx = rb_enc_to_index(enc);
|
||||||
|
|
||||||
len = RSTRING_LEN(str);
|
len = RSTRING_LEN(str);
|
||||||
cstr = RSTRING_PTR(str);
|
cstr = RSTRING_PTR(str);
|
||||||
|
|
|
@ -4,6 +4,13 @@
|
||||||
# generating HTTP responses.
|
# generating HTTP responses.
|
||||||
#++
|
#++
|
||||||
class CGI
|
class CGI
|
||||||
|
unless const_defined?(:Util)
|
||||||
|
module Util
|
||||||
|
@@accept_charset = "UTF-8" # :nodoc:
|
||||||
|
end
|
||||||
|
include Util
|
||||||
|
extend Util
|
||||||
|
end
|
||||||
|
|
||||||
$CGI_ENV = ENV # for FCGI support
|
$CGI_ENV = ENV # for FCGI support
|
||||||
|
|
||||||
|
@ -734,7 +741,7 @@ class CGI
|
||||||
#
|
#
|
||||||
# CGI.accept_charset = "EUC-JP"
|
# CGI.accept_charset = "EUC-JP"
|
||||||
#
|
#
|
||||||
@@accept_charset="UTF-8"
|
@@accept_charset="UTF-8" if false # needed for rdoc?
|
||||||
|
|
||||||
# Return the accept character set for all new CGI instances.
|
# Return the accept character set for all new CGI instances.
|
||||||
def self.accept_charset
|
def self.accept_charset
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
# frozen_string_literal: false
|
# frozen_string_literal: false
|
||||||
class CGI; module Util; end; extend Util; end
|
class CGI
|
||||||
|
module Util; end
|
||||||
|
include Util
|
||||||
|
extend Util
|
||||||
|
end
|
||||||
module CGI::Util
|
module CGI::Util
|
||||||
@@accept_charset="UTF-8" unless defined?(@@accept_charset)
|
@@accept_charset="UTF-8" unless defined?(@@accept_charset)
|
||||||
# URL-encode a string.
|
# URL-encode a string.
|
||||||
|
|
|
@ -53,6 +53,16 @@ class CGIUtilTest < Test::Unit::TestCase
|
||||||
assert_equal(Encoding::UTF_8, CGI::unescape("%C0%3C%3C".force_encoding("UTF-8")).encoding)
|
assert_equal(Encoding::UTF_8, CGI::unescape("%C0%3C%3C".force_encoding("UTF-8")).encoding)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_cgi_unescape_accept_charset
|
||||||
|
return unless defined?(::Encoding)
|
||||||
|
|
||||||
|
assert_raise(TypeError) {CGI.unescape('', nil)}
|
||||||
|
assert_separately(%w[-rcgi/util], "#{<<-"begin;"}\n#{<<-"end;"}")
|
||||||
|
begin;
|
||||||
|
assert_equal("", CGI.unescape(''))
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
|
||||||
def test_cgi_pretty
|
def test_cgi_pretty
|
||||||
assert_equal("<HTML>\n <BODY>\n </BODY>\n</HTML>\n",CGI::pretty("<HTML><BODY></BODY></HTML>"))
|
assert_equal("<HTML>\n <BODY>\n </BODY>\n</HTML>\n",CGI::pretty("<HTML><BODY></BODY></HTML>"))
|
||||||
assert_equal("<HTML>\n\t<BODY>\n\t</BODY>\n</HTML>\n",CGI::pretty("<HTML><BODY></BODY></HTML>","\t"))
|
assert_equal("<HTML>\n\t<BODY>\n\t</BODY>\n</HTML>\n",CGI::pretty("<HTML><BODY></BODY></HTML>","\t"))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#define RUBY_VERSION "2.4.2"
|
#define RUBY_VERSION "2.4.2"
|
||||||
#define RUBY_RELEASE_DATE "2017-08-05"
|
#define RUBY_RELEASE_DATE "2017-08-05"
|
||||||
#define RUBY_PATCHLEVEL 174
|
#define RUBY_PATCHLEVEL 175
|
||||||
|
|
||||||
#define RUBY_RELEASE_YEAR 2017
|
#define RUBY_RELEASE_YEAR 2017
|
||||||
#define RUBY_RELEASE_MONTH 8
|
#define RUBY_RELEASE_MONTH 8
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue