git_command.py: Handle unicode decode error

repo diffmanifests saves git commit messages in buf and uses default
utf-8 decoding, in some scenarios git commit message can itself contain
a non UTF-8 character due to a typo or incorrect i18n.commitEncoding.

e.g.
d354d9afe923 [PATCH] fbcon: don\xb4t call set_par() in fbcon_init() if vc_mode == KD_GRAPHICS

Convert the buf containing git commits to string if decoding to utf-8
encounters an error.

Signed-off-by: Gaurav Pathak <gaurav.pathak@pantacor.com>
Change-Id: If818562f0faaa5062c765fbea11dc0e1c86a24d7
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/294742
Reviewed-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
Gaurav Pathak 2021-01-26 18:10:43 +05:30 committed by Mike Frysinger
parent 2a2da80ba6
commit db3128f2ec

View File

@ -395,7 +395,7 @@ class GitCommand(object):
s_in.remove(s) s_in.remove(s)
continue continue
if not hasattr(buf, 'encode'): if not hasattr(buf, 'encode'):
buf = buf.decode() buf = buf.decode('utf-8', 'backslashreplace')
if s.std_name == 'stdout': if s.std_name == 'stdout':
self.stdout += buf self.stdout += buf
else: else: