mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/xmlrpc/client.rb: Fix possible HTTP header formatting failure by
'Basic' header. Long username caused the base64 String truncation in HTTP header which is not allowed. See #5046. * test/xmlrpc/test_webrick_server.rb: test it. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0a9b952c6f
commit
2fff0f4f71
3 changed files with 42 additions and 4 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Mon Jul 25 22:14:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/xmlrpc/client.rb: Fix possible HTTP header formatting failure by
|
||||||
|
'Basic' header. Long username caused the base64 String truncation in
|
||||||
|
HTTP header which is not allowed. See #5046.
|
||||||
|
|
||||||
|
* test/xmlrpc/test_webrick_server.rb: test it.
|
||||||
|
|
||||||
Mon Jul 25 15:04:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
|
Mon Jul 25 15:04:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
|
||||||
|
|
||||||
* ext/openssl/lib/openssl.rb: End of transition period introduced by
|
* ext/openssl/lib/openssl.rb: End of transition period introduced by
|
||||||
|
|
|
@ -493,7 +493,7 @@ module XMLRPC
|
||||||
else
|
else
|
||||||
a = "#@user"
|
a = "#@user"
|
||||||
a << ":#@password" if @password != nil
|
a << ":#@password" if @password != nil
|
||||||
@auth = ("Basic " + [a].pack("m")).chomp
|
@auth = "Basic " + [a].pack("m0")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,13 +3,25 @@ require 'webrick'
|
||||||
require_relative 'webrick_testing'
|
require_relative 'webrick_testing'
|
||||||
require "xmlrpc/server"
|
require "xmlrpc/server"
|
||||||
require 'xmlrpc/client'
|
require 'xmlrpc/client'
|
||||||
|
require 'logger'
|
||||||
|
|
||||||
class Test_Webrick < Test::Unit::TestCase
|
class Test_Webrick < Test::Unit::TestCase
|
||||||
include WEBrick_Testing
|
include WEBrick_Testing
|
||||||
|
|
||||||
|
@@basic_auth = WEBrick::HTTPAuth::BasicAuth.new(
|
||||||
|
:Realm => 'auth',
|
||||||
|
:UserDB => WEBrick::HTTPAuth::Htpasswd.new(File.expand_path('./htpasswd', File.dirname(__FILE__))),
|
||||||
|
:Logger => Logger.new(File::NULL),
|
||||||
|
)
|
||||||
|
|
||||||
def create_servlet
|
def create_servlet
|
||||||
s = XMLRPC::WEBrickServlet.new
|
s = XMLRPC::WEBrickServlet.new
|
||||||
|
|
||||||
|
def s.service(req, res)
|
||||||
|
@@basic_auth.authenticate(req, res)
|
||||||
|
super(req, res)
|
||||||
|
end
|
||||||
|
|
||||||
s.add_handler("test.add") do |a,b|
|
s.add_handler("test.add") do |a,b|
|
||||||
a + b
|
a + b
|
||||||
end
|
end
|
||||||
|
@ -46,8 +58,6 @@ class Test_Webrick < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
start_server(option) {|w| w.mount('/RPC2', create_servlet) }
|
start_server(option) {|w| w.mount('/RPC2', create_servlet) }
|
||||||
|
|
||||||
@s = XMLRPC::Client.new3(:port => port, :use_ssl => use_ssl)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
PORT = 8070
|
PORT = 8070
|
||||||
|
@ -56,13 +66,33 @@ class Test_Webrick < Test::Unit::TestCase
|
||||||
[false].each do |use_ssl|
|
[false].each do |use_ssl|
|
||||||
begin
|
begin
|
||||||
setup_http_server(PORT, use_ssl)
|
setup_http_server(PORT, use_ssl)
|
||||||
do_test
|
@s = XMLRPC::Client.new3(:port => PORT, :use_ssl => use_ssl)
|
||||||
|
@s.user = 'admin'
|
||||||
|
@s.password = 'admin'
|
||||||
|
silent do
|
||||||
|
do_test
|
||||||
|
end
|
||||||
|
@s = XMLRPC::Client.new3(:port => PORT, :use_ssl => use_ssl)
|
||||||
|
@s.user = '01234567890123456789012345678901234567890123456789012345678901234567890123456789'
|
||||||
|
@s.password = 'guest'
|
||||||
|
silent do
|
||||||
|
do_test
|
||||||
|
end
|
||||||
ensure
|
ensure
|
||||||
stop_server
|
stop_server
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def silent
|
||||||
|
begin
|
||||||
|
back, $VERBOSE = $VERBOSE, nil
|
||||||
|
yield
|
||||||
|
ensure
|
||||||
|
$VERBOSE = back
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def do_test
|
def do_test
|
||||||
# simple call
|
# simple call
|
||||||
assert_equal 9, @s.call('test.add', 4, 5)
|
assert_equal 9, @s.call('test.add', 4, 5)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue