ruby-changes:8711
From: matz <ko1@a...>
Date: Tue, 18 Nov 2008 16:21:30 +0900 (JST)
Subject: [ruby-changes:8711] Ruby:r20246 (ruby_1_8): * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#read_request_line):
matz 2008-11-18 16:21:12 +0900 (Tue, 18 Nov 2008) New Revision: 20246 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=20246 Log: * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#read_request_line): use non-greedy match for path retrieval to avoid huge recursion for insanely long path. Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/lib/webrick/httprequest.rb Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 20245) +++ ruby_1_8/ChangeLog (revision 20246) @@ -3,6 +3,12 @@ * lib/logger.rb (ProgName): fixed for svn, based on a patch from Nobuhiro IMAI at [ruby-dev:37108]. +Tue Nov 18 15:59:37 2008 Yukihiro Matsumoto <matz@r...> + + * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#read_request_line): + use non-greedy match for path retrieval to avoid huge recursion + for insanely long path. + Tue Nov 18 09:42:11 2008 Nobuyoshi Nakada <nobu@r...> * lib/optparse.rb (OptionParser::make_switch): makes default Index: ruby_1_8/lib/webrick/httprequest.rb =================================================================== --- ruby_1_8/lib/webrick/httprequest.rb (revision 20245) +++ ruby_1_8/lib/webrick/httprequest.rb (revision 20246) @@ -225,7 +225,7 @@ @request_line = read_line(socket) if socket @request_time = Time.now raise HTTPStatus::EOFError unless @request_line - if /^(\S+)\s+(\S+)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line + if /^(\S+)\s+(\S+?)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line @request_method = $1 @unparsed_uri = $2 @http_version = HTTPVersion.new($3 ? $3 : "0.9") -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/