Skip to content

Commit 5b78296

Browse files
authored
Merge pull request #176 from kjd/issue-174
Restore IDNAError exception for codepoints that don't exist in Unicode (fixes #174)
2 parents 1d365e1 + b0d8f3c commit 5b78296

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Diff for: idna/core.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,12 @@ def check_label(label: Union[str, bytes, bytearray]) -> None:
240240
if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']):
241241
continue
242242
elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']):
243-
if not valid_contextj(label, pos):
244-
raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format(
243+
try:
244+
if not valid_contextj(label, pos):
245+
raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format(
246+
_unot(cp_value), pos+1, repr(label)))
247+
except ValueError:
248+
raise IDNAError('Unknown codepoint adjacent to joiner {} at position {} in {}'.format(
245249
_unot(cp_value), pos+1, repr(label)))
246250
elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']):
247251
if not valid_contexto(label, pos):

Diff for: tests/test_idna.py

+1
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ def test_decode(self, decode=None, skip_str=False):
270270
self.assertRaises(idna.IDNAError, decode, b'xn--')
271271
self.assertRaises(idna.IDNAError, decode, b'\x8d\xd2')
272272
self.assertRaises(idna.IDNAError, 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')
273+
self.assertRaises(idna.IDNAError, decode, b'xn--ukba655qaaaa14431eeaaba.c')
273274

274275
if __name__ == '__main__':
275276
unittest.main()

0 commit comments

Comments
 (0)