From c5a45669229906a2ff8ea87bd69d1df2feac8ffc Mon Sep 17 00:00:00 2001 From: Hynek Schlawack Date: Tue, 17 Jul 2012 13:05:43 +0200 Subject: #15377: Make posixpath.join() more strict when checking for str/bytes mix Based on a patch by Nick Coghlan. --- Lib/posixpath.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'Lib/posixpath.py') diff --git a/Lib/posixpath.py b/Lib/posixpath.py index 84bcc1355f9..7a4daa8be94 100644 --- a/Lib/posixpath.py +++ b/Lib/posixpath.py @@ -83,11 +83,12 @@ def join(a, *p): else: path += sep + b except TypeError: - strs = [isinstance(s, str) for s in (a, ) + p] - if any(strs) and not all(strs): + valid_types = all(isinstance(s, (str, bytes, bytearray)) + for s in (a, ) + p) + if valid_types: + # Must have a mixture of text and binary data raise TypeError("Can't mix strings and bytes in path components.") - else: - raise + raise return path -- cgit v1.2.3