diff options
author | Michael Laß <bevan@bi-co.net> | 2024-01-02 14:37:19 +0100 |
---|---|---|
committer | casept <davids.paskevics@gmail.com> | 2024-01-31 13:14:22 +0000 |
commit | e7eaa48daf65046dedc97574cf433296e27db5bd (patch) | |
tree | c2b553007c5ac118a22b1a4caef3ca3c0d7e5312 /src/lib/Bcfg2/Utils.py | |
parent | f4c9be64648848eb7ec94e165ddcbb2df7ef8e25 (diff) | |
download | bcfg2-e7eaa48daf65046dedc97574cf433296e27db5bd.tar.gz bcfg2-e7eaa48daf65046dedc97574cf433296e27db5bd.tar.bz2 bcfg2-e7eaa48daf65046dedc97574cf433296e27db5bd.zip |
utils: fix is_string when called with bytestring
ord() cannot be called on bytes. Hence, encoded strings need to be
handled separately.
Diffstat (limited to 'src/lib/Bcfg2/Utils.py')
-rw-r--r-- | src/lib/Bcfg2/Utils.py | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/lib/Bcfg2/Utils.py b/src/lib/Bcfg2/Utils.py index b043fd11c..4d2ddebd8 100644 --- a/src/lib/Bcfg2/Utils.py +++ b/src/lib/Bcfg2/Utils.py @@ -344,14 +344,16 @@ class classproperty(object): # pylint: disable=C0103 def is_string(strng, encoding): """ Returns true if the string contains no ASCII control characters and can be decoded from the specified encoding. """ - for char in strng: - if ord(char) < 9 or ord(char) > 13 and ord(char) < 32: + if hasattr(strng, "decode"): + for char in strng: + if char < 9 or char > 13 and char < 32: + return False + try: + strng.decode(encoding) + except: # pylint: disable=W0702 return False - if not hasattr(strng, "decode"): - # py3k - return True - try: - strng.decode(encoding) - return True - except: # pylint: disable=W0702 - return False + else: + for char in strng: + if ord(char) < 9 or ord(char) > 13 and ord(char) < 32: + return False + return True |