When reading lines from a text-mode fd strings are returned. These can not be decoded again into strings, breaking the logic in parser. Just make sure all files are opened in binary mode on Python 3, so the current logic keeps working.
This remains compatible with Python 2 and should have no functional change. Signed-off-by: Thomas Weißschuh <li...@weissschuh.net> --- scripts/spdxcheck.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/spdxcheck.py b/scripts/spdxcheck.py index 839e190bbd7a..8f472f995d70 100755 --- a/scripts/spdxcheck.py +++ b/scripts/spdxcheck.py @@ -250,12 +250,15 @@ if __name__ == '__main__': try: if len(args.path) and args.path[0] == '-': - parser.parse_lines(sys.stdin, args.maxlines, '-') + parser.parse_lines( + # always get the binary fd + getattr(sys.stdin, 'buffer', sys.stdin), + args.maxlines, '-') else: if args.path: for p in args.path: if os.path.isfile(p): - parser.parse_lines(open(p), args.maxlines, p) + parser.parse_lines(open(p, 'rb'), args.maxlines, p) elif os.path.isdir(p): scan_git_subtree(repo.head.reference.commit.tree, p) else: -- 2.18.0