Mercurial > hgrepos > Python > apps > py-cutils
changeset 52:5935055edea6
More proper formal checks (with regexp) for valid hex and base64 encoding of digests
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Wed, 26 Jan 2022 14:49:24 +0100 |
| parents | 58d5a0b6e5b3 |
| children | 2e0cf1e7c483 |
| files | shasum.py |
| diffstat | 1 files changed, 14 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/shasum.py Wed Jan 26 14:15:43 2022 +0100 +++ b/shasum.py Wed Jan 26 14:49:24 2022 +0100 @@ -177,15 +177,23 @@ """ if len(expected_digest) == algo().digest_size * 2: # hex - try: - exd = binascii.unhexlify(expected_digest) - except TypeError: + if re.search(r"\A[a-fA-F0-9]+\Z", expected_digest): + try: + exd = binascii.unhexlify(expected_digest) + except TypeError: + return False + else: return False else: # base64 - try: - exd = base64.b64decode(expected_digest) - except TypeError: + if re.search( + r"\A(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?\Z", + expected_digest): + try: + exd = base64.b64decode(expected_digest) + except TypeError: + return False + else: return False return given_digest == exd
