<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>test/test_oauth_helper.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,7 @@
 == 0.3.3 / 0.4.0
 
 * Corrected OAuth XMPP namespace (Seth)
+* Improved error handling for invalid Authorization headers (Matt Sanford)
 
 == 0.3.2 2009-03-23
 </diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -68,6 +68,7 @@ test/test_helper.rb
 test/test_hmac_sha1.rb
 test/test_net_http_client.rb
 test/test_net_http_request_proxy.rb
+test/test_oauth_helper.rb
 test/test_rack_request_proxy.rb
 test/test_request_token.rb
 test/test_rsa_sha1.rb</diff>
      <filename>Manifest.txt</filename>
    </modified>
    <modified>
      <diff>@@ -38,6 +38,9 @@ module OAuth
       # decompose
       params = header[6,header.length].split(/[,=]/)
 
+      # odd number of arguments - must be a malformed header.
+      raise OAuth::Problem.new(&quot;Invalid authorization header&quot;) if params.size % 2 != 0
+
       # strip and unescape
       params.map! { |v| unescape(v.strip) }
 </diff>
      <filename>lib/oauth/helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
   s.email = %q{oauth-ruby@googlegroups.com}
   s.executables = [&quot;oauth&quot;]
   s.extra_rdoc_files = [&quot;History.txt&quot;, &quot;License.txt&quot;, &quot;Manifest.txt&quot;, &quot;README.rdoc&quot;, &quot;website/index.txt&quot;]
-  s.files = [&quot;History.txt&quot;, &quot;License.txt&quot;, &quot;Manifest.txt&quot;, &quot;README.rdoc&quot;, &quot;Rakefile&quot;, &quot;TODO&quot;, &quot;bin/oauth&quot;, &quot;examples/yql.rb&quot;, &quot;lib/oauth.rb&quot;, &quot;lib/oauth/oauth.rb&quot;, &quot;lib/oauth/cli.rb&quot;, &quot;lib/oauth/client.rb&quot;, &quot;lib/oauth/client/action_controller_request.rb&quot;, &quot;lib/oauth/client/helper.rb&quot;, &quot;lib/oauth/client/net_http.rb&quot;, &quot;lib/oauth/consumer.rb&quot;, &quot;lib/oauth/errors.rb&quot;, &quot;lib/oauth/errors/error.rb&quot;, &quot;lib/oauth/errors/problem.rb&quot;, &quot;lib/oauth/errors/unauthorized.rb&quot;, &quot;lib/oauth/helper.rb&quot;, &quot;lib/oauth/oauth_test_helper.rb&quot;, &quot;lib/oauth/request_proxy.rb&quot;, &quot;lib/oauth/request_proxy/action_controller_request.rb&quot;, &quot;lib/oauth/request_proxy/base.rb&quot;, &quot;lib/oauth/request_proxy/jabber_request.rb&quot;, &quot;lib/oauth/request_proxy/mock_request.rb&quot;, &quot;lib/oauth/request_proxy/net_http.rb&quot;, &quot;lib/oauth/request_proxy/rack_request.rb&quot;, &quot;lib/oauth/server.rb&quot;, &quot;lib/oauth/signature.rb&quot;, &quot;lib/oauth/signature/base.rb&quot;, &quot;lib/oauth/signature/hmac/base.rb&quot;, &quot;lib/oauth/signature/hmac/md5.rb&quot;, &quot;lib/oauth/signature/hmac/rmd160.rb&quot;, &quot;lib/oauth/signature/hmac/sha1.rb&quot;, &quot;lib/oauth/signature/hmac/sha2.rb&quot;, &quot;lib/oauth/signature/md5.rb&quot;, &quot;lib/oauth/signature/plaintext.rb&quot;, &quot;lib/oauth/signature/rsa/sha1.rb&quot;, &quot;lib/oauth/signature/sha1.rb&quot;, &quot;lib/oauth/token.rb&quot;, &quot;lib/oauth/tokens/access_token.rb&quot;, &quot;lib/oauth/tokens/consumer_token.rb&quot;, &quot;lib/oauth/tokens/request_token.rb&quot;, &quot;lib/oauth/tokens/server_token.rb&quot;, &quot;lib/oauth/tokens/token.rb&quot;, &quot;lib/oauth/version.rb&quot;, &quot;oauth.gemspec&quot;, &quot;script/destroy&quot;, &quot;script/generate&quot;, &quot;script/txt2html&quot;, &quot;setup.rb&quot;, &quot;tasks/deployment.rake&quot;, &quot;tasks/environment.rake&quot;, &quot;tasks/website.rake&quot;, &quot;test/cases/oauth_case.rb&quot;, &quot;test/cases/spec/1_0-final/test_construct_request_url.rb&quot;, &quot;test/cases/spec/1_0-final/test_normalize_request_parameters.rb&quot;, &quot;test/cases/spec/1_0-final/test_parameter_encodings.rb&quot;, &quot;test/cases/spec/1_0-final/test_signature_base_strings.rb&quot;, &quot;test/keys/rsa.cert&quot;, &quot;test/keys/rsa.pem&quot;, &quot;test/test_access_token.rb&quot;, &quot;test/test_action_controller_request_proxy.rb&quot;, &quot;test/test_consumer.rb&quot;, &quot;test/test_helper.rb&quot;, &quot;test/test_hmac_sha1.rb&quot;, &quot;test/test_net_http_client.rb&quot;, &quot;test/test_net_http_request_proxy.rb&quot;, &quot;test/test_rack_request_proxy.rb&quot;, &quot;test/test_request_token.rb&quot;, &quot;test/test_rsa_sha1.rb&quot;, &quot;test/test_server.rb&quot;, &quot;test/test_signature.rb&quot;, &quot;test/test_signature_base.rb&quot;, &quot;test/test_signature_plain_text.rb&quot;, &quot;test/test_token.rb&quot;, &quot;website/index.html&quot;, &quot;website/index.txt&quot;, &quot;website/javascripts/rounded_corners_lite.inc.js&quot;, &quot;website/stylesheets/screen.css&quot;, &quot;website/template.rhtml&quot;]
+  s.files = [&quot;History.txt&quot;, &quot;License.txt&quot;, &quot;Manifest.txt&quot;, &quot;README.rdoc&quot;, &quot;Rakefile&quot;, &quot;TODO&quot;, &quot;bin/oauth&quot;, &quot;examples/yql.rb&quot;, &quot;lib/oauth.rb&quot;, &quot;lib/oauth/oauth.rb&quot;, &quot;lib/oauth/cli.rb&quot;, &quot;lib/oauth/client.rb&quot;, &quot;lib/oauth/client/action_controller_request.rb&quot;, &quot;lib/oauth/client/helper.rb&quot;, &quot;lib/oauth/client/net_http.rb&quot;, &quot;lib/oauth/consumer.rb&quot;, &quot;lib/oauth/errors.rb&quot;, &quot;lib/oauth/errors/error.rb&quot;, &quot;lib/oauth/errors/problem.rb&quot;, &quot;lib/oauth/errors/unauthorized.rb&quot;, &quot;lib/oauth/helper.rb&quot;, &quot;lib/oauth/oauth_test_helper.rb&quot;, &quot;lib/oauth/request_proxy.rb&quot;, &quot;lib/oauth/request_proxy/action_controller_request.rb&quot;, &quot;lib/oauth/request_proxy/base.rb&quot;, &quot;lib/oauth/request_proxy/jabber_request.rb&quot;, &quot;lib/oauth/request_proxy/mock_request.rb&quot;, &quot;lib/oauth/request_proxy/net_http.rb&quot;, &quot;lib/oauth/request_proxy/rack_request.rb&quot;, &quot;lib/oauth/server.rb&quot;, &quot;lib/oauth/signature.rb&quot;, &quot;lib/oauth/signature/base.rb&quot;, &quot;lib/oauth/signature/hmac/base.rb&quot;, &quot;lib/oauth/signature/hmac/md5.rb&quot;, &quot;lib/oauth/signature/hmac/rmd160.rb&quot;, &quot;lib/oauth/signature/hmac/sha1.rb&quot;, &quot;lib/oauth/signature/hmac/sha2.rb&quot;, &quot;lib/oauth/signature/md5.rb&quot;, &quot;lib/oauth/signature/plaintext.rb&quot;, &quot;lib/oauth/signature/rsa/sha1.rb&quot;, &quot;lib/oauth/signature/sha1.rb&quot;, &quot;lib/oauth/token.rb&quot;, &quot;lib/oauth/tokens/access_token.rb&quot;, &quot;lib/oauth/tokens/consumer_token.rb&quot;, &quot;lib/oauth/tokens/request_token.rb&quot;, &quot;lib/oauth/tokens/server_token.rb&quot;, &quot;lib/oauth/tokens/token.rb&quot;, &quot;lib/oauth/version.rb&quot;, &quot;oauth.gemspec&quot;, &quot;script/destroy&quot;, &quot;script/generate&quot;, &quot;script/txt2html&quot;, &quot;setup.rb&quot;, &quot;tasks/deployment.rake&quot;, &quot;tasks/environment.rake&quot;, &quot;tasks/website.rake&quot;, &quot;test/cases/oauth_case.rb&quot;, &quot;test/cases/spec/1_0-final/test_construct_request_url.rb&quot;, &quot;test/cases/spec/1_0-final/test_normalize_request_parameters.rb&quot;, &quot;test/cases/spec/1_0-final/test_parameter_encodings.rb&quot;, &quot;test/cases/spec/1_0-final/test_signature_base_strings.rb&quot;, &quot;test/keys/rsa.cert&quot;, &quot;test/keys/rsa.pem&quot;, &quot;test/test_access_token.rb&quot;, &quot;test/test_action_controller_request_proxy.rb&quot;, &quot;test/test_consumer.rb&quot;, &quot;test/test_helper.rb&quot;, &quot;test/test_hmac_sha1.rb&quot;, &quot;test/test_net_http_client.rb&quot;, &quot;test/test_net_http_request_proxy.rb&quot;, &quot;test/test_oauth_helper.rb&quot;, &quot;test/test_rack_request_proxy.rb&quot;, &quot;test/test_request_token.rb&quot;, &quot;test/test_rsa_sha1.rb&quot;, &quot;test/test_server.rb&quot;, &quot;test/test_signature.rb&quot;, &quot;test/test_signature_base.rb&quot;, &quot;test/test_signature_plain_text.rb&quot;, &quot;test/test_token.rb&quot;, &quot;website/index.html&quot;, &quot;website/index.txt&quot;, &quot;website/javascripts/rounded_corners_lite.inc.js&quot;, &quot;website/stylesheets/screen.css&quot;, &quot;website/template.rhtml&quot;]
   s.has_rdoc = true
   s.homepage = %q{http://oauth.rubyforge.org}
   s.rdoc_options = [&quot;--main&quot;, &quot;README.rdoc&quot;]
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
   s.rubyforge_project = %q{oauth}
   s.rubygems_version = %q{1.3.1}
   s.summary = %q{OAuth Core Ruby implementation}
-  s.test_files = [&quot;test/cases/spec/1_0-final/test_construct_request_url.rb&quot;, &quot;test/cases/spec/1_0-final/test_normalize_request_parameters.rb&quot;, &quot;test/cases/spec/1_0-final/test_parameter_encodings.rb&quot;, &quot;test/cases/spec/1_0-final/test_signature_base_strings.rb&quot;, &quot;test/test_access_token.rb&quot;, &quot;test/test_action_controller_request_proxy.rb&quot;, &quot;test/test_consumer.rb&quot;, &quot;test/test_helper.rb&quot;, &quot;test/test_hmac_sha1.rb&quot;, &quot;test/test_net_http_client.rb&quot;, &quot;test/test_net_http_request_proxy.rb&quot;, &quot;test/test_rack_request_proxy.rb&quot;, &quot;test/test_request_token.rb&quot;, &quot;test/test_rsa_sha1.rb&quot;, &quot;test/test_server.rb&quot;, &quot;test/test_signature.rb&quot;, &quot;test/test_signature_base.rb&quot;, &quot;test/test_signature_plain_text.rb&quot;, &quot;test/test_token.rb&quot;]
+  s.test_files = [&quot;test/cases/spec/1_0-final/test_construct_request_url.rb&quot;, &quot;test/cases/spec/1_0-final/test_normalize_request_parameters.rb&quot;, &quot;test/cases/spec/1_0-final/test_parameter_encodings.rb&quot;, &quot;test/cases/spec/1_0-final/test_signature_base_strings.rb&quot;, &quot;test/test_access_token.rb&quot;, &quot;test/test_action_controller_request_proxy.rb&quot;, &quot;test/test_consumer.rb&quot;, &quot;test/test_helper.rb&quot;, &quot;test/test_hmac_sha1.rb&quot;, &quot;test/test_net_http_client.rb&quot;, &quot;test/test_net_http_request_proxy.rb&quot;, &quot;test/test_oauth_helper.rb&quot;, &quot;test/test_rack_request_proxy.rb&quot;, &quot;test/test_request_token.rb&quot;, &quot;test/test_rsa_sha1.rb&quot;, &quot;test/test_server.rb&quot;, &quot;test/test_signature.rb&quot;, &quot;test/test_signature_base.rb&quot;, &quot;test/test_signature_plain_text.rb&quot;, &quot;test/test_token.rb&quot;]
 
   if s.respond_to? :specification_version then
     current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION</diff>
      <filename>oauth.gemspec</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>20bb81283a41380fb8a316f23913eb06888a3f9b</id>
    </parent>
  </parents>
  <author>
    <name>Matt Sanford</name>
    <email>matt@twitter.com</email>
  </author>
  <url>http://github.com/mojodna/oauth/commit/dd3bcd1d759efd60baaea62e52fdf7c26ea4d075</url>
  <id>dd3bcd1d759efd60baaea62e52fdf7c26ea4d075</id>
  <committed-date>2009-04-21T19:21:05-07:00</committed-date>
  <authored-date>2009-04-17T15:49:16-07:00</authored-date>
  <message>Improve error handling for imperfect authorization headers.</message>
  <tree>1abaabfe8f458b627ebcaa63fe55e7a2faf0cb5d</tree>
  <committer>
    <name>Seth Fitzsimmons</name>
    <email>seth@mojodna.net</email>
  </committer>
</commit>
