From 4fdcc18d1eb214b35e16c372e8682fb8b8a52e11 Mon Sep 17 00:00:00 2001 From: Kim Davies Date: Sun, 3 Oct 2021 08:01:12 -0700 Subject: [PATCH] Raise IDNAError exception on invalid A-label (fixes #109) --- idna/core.py | 5 ++++- tests/test_idna.py | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/idna/core.py b/idna/core.py index 871ebd3..c66fb9f 100644 --- a/idna/core.py +++ b/idna/core.py @@ -312,7 +312,10 @@ def ulabel(label): check_label(label_bytes) return label_bytes.decode('ascii') - label = label_bytes.decode('punycode') + try: + label = label_bytes.decode('punycode') + except UnicodeError: + raise IDNAError('Invalid A-label') check_label(label) return label diff --git a/tests/test_idna.py b/tests/test_idna.py index 7ac6057..f0c74d2 100755 --- a/tests/test_idna.py +++ b/tests/test_idna.py @@ -260,6 +260,7 @@ def test_decode(self): self.assertRaises(idna.IDNAError, idna.decode, 'xn---------90gglbagaac.aa') self.assertRaises(idna.IDNAError, idna.decode, 'xn--') self.assertRaises(idna.IDNAError, idna.decode, b'\x8d\xd2') + self.assertRaises(idna.IDNAError, idna.decode, b'A.A.0.a.a.A.0.a.A.A.0.a.A.0A.2.a.A.A.0.a.A.0.A.a.A0.a.a.A.0.a.fB.A.A.a.A.A.B.A.A.a.A.A.B.A.A.a.A.A.0.a.A.a.a.A.A.0.a.A.0.A.a.A0.a.a.A.0.a.fB.A.A.a.A.A.B.0A.A.a.A.A.B.A.A.a.A.A.a.A.A.B.A.A.a.A.0.a.B.A.A.a.A.B.A.a.A.A.5.a.A.0.a.Ba.A.B.A.A.a.A.0.a.Xn--B.A.A.A.a') if __name__ == '__main__': unittest.main()