Rev 6617: (richard-wilbur) Fix lp:1606203 caused by using a user/pass combination for in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/2.7/

Patch Queue Manager pqm at pqm.ubuntu.com
Tue Sep 13 19:56:48 UTC 2016


At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/2.7/

------------------------------------------------------------
revno: 6617 [merge]
revision-id: pqm at pqm.ubuntu.com-20160913195648-gl3w5ohxo8pqavdr
parent: pqm at pqm.ubuntu.com-20160207185958-e04s369m88endygc
parent: v.ladeuil+lp at free.fr-20160909125940-4bhgpwoenpjal97c
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: 2.7
timestamp: Tue 2016-09-13 19:56:48 +0000
message:
  (richard-wilbur) Fix lp:1606203 caused by using a user/pass combination for
   http auth longer than ~57 chars. (Vincent Ladeuil) (Vincent Ladeuil)
modified:
  bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
  bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
=== modified file 'bzrlib/tests/test_http.py'
--- a/bzrlib/tests/test_http.py	2016-02-01 18:06:32 +0000
+++ b/bzrlib/tests/test_http.py	2016-09-09 12:59:40 +0000
@@ -260,6 +260,16 @@
         self.assertEqual('basic', scheme)
         self.assertEqual('realm="Thou should not pass"', remainder)
 
+    def test_build_basic_header_with_long_creds(self):
+        handler = _urllib2_wrappers.BasicAuthHandler()
+        user = 'user' * 10  # length 40
+        password = 'password' * 5  # length 40
+        header = handler.build_auth_header(
+            dict(user=user, password=password), None)
+        # https://bugs.launchpad.net/bzr/+bug/1606203 was caused by incorrectly
+        # creating a header value with an embedded '\n'
+        self.assertFalse('\n' in header)
+
     def test_basic_extract_realm(self):
         scheme, remainder = self.parse_header(
             'Basic realm="Thou should not pass"',

=== modified file 'bzrlib/transport/http/_urllib2_wrappers.py'
--- a/bzrlib/transport/http/_urllib2_wrappers.py	2016-01-31 12:55:31 +0000
+++ b/bzrlib/transport/http/_urllib2_wrappers.py	2016-09-09 12:59:40 +0000
@@ -48,6 +48,7 @@
 # actual code more or less do that, tests should be written to
 # ensure that.
 
+import base64
 import errno
 import httplib
 import os
@@ -1491,7 +1492,7 @@
 
     def build_auth_header(self, auth, request):
         raw = '%s:%s' % (auth['user'], auth['password'])
-        auth_header = 'Basic ' + raw.encode('base64').strip()
+        auth_header = 'Basic ' + base64.b64encode(raw)
         return auth_header
 
     def extract_realm(self, header_value):




More information about the bazaar-commits mailing list