From 2b7daff8cb0bb6a0836ca0cbc18f7f86b5eb0c86 Mon Sep 17 00:00:00 2001 From: Pierre Tardy Date: Thu, 16 May 2019 10:28:21 +0200 Subject: [PATCH] Don't try to decode when checking clone bundles This fix exception with python3 with stack-trace: error: Cannot fetch platform_external_grpc-grpc-java.git (UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 640: invalid start byte) [...] File "[...]project.py", line 2255, in _IsValidBundle if f.read(16) == '# v2 git bundle\n': File "/usr/lib/python3.5/codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) Even if we ask 16 characters, python buffered decoder will try to decode more in the buffer The patch works for python2 and python3, and open the file in byte mode so that decoding is not attemped Signed-off-by: Pierre Tardy Change-Id: I837ae3c5cd724b34670fc2a84e853431f482b20d Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/224642 Reviewed-by: Mike Frysinger Reviewed-by: David Pursehouse Tested-by: Mike Frysinger --- project.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project.py b/project.py index e0419e7a..67d3bb20 100755 --- a/project.py +++ b/project.py @@ -2261,8 +2261,8 @@ class Project(object): def _IsValidBundle(self, path, quiet): try: - with open(path) as f: - if f.read(16) == '# v2 git bundle\n': + with open(path, 'rb') as f: + if f.read(16) == b'# v2 git bundle\n': return True else: if not quiet: