diff options
author | Pierre Le Marre <dev@wismill.eu> | 2023-05-13 17:26:24 +0200 |
---|---|---|
committer | Ran Benita <ran@unusedvar.com> | 2023-05-13 22:02:46 +0300 |
commit | 183761ac24544b355aaf362e62d05fa1c184baf8 (patch) | |
tree | 0fb328d8876d92997fca57acfbb4a76dc6ae7d58 /test/keysym.c | |
parent | 5fbffaf035f0c0edbcf7b2e747ccab9a234101ff (diff) | |
download | xorg-lib-libxkbcommon-183761ac24544b355aaf362e62d05fa1c184baf8.tar.gz |
Do not interpret nor emit invalid Unicode encoding forms
Surrogates are invalid in both UTF-32 and UTF-8.
See https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf#G28875
and https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf#G31703
Diffstat (limited to 'test/keysym.c')
-rw-r--r-- | test/keysym.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/keysym.c b/test/keysym.c index 38f967d..a4dba0c 100644 --- a/test/keysym.c +++ b/test/keysym.c @@ -222,6 +222,8 @@ main(void) assert(test_utf8(0x10005d0, "א")); assert(test_utf8(0x110ffff, "\xf4\x8f\xbf\xbf")); + assert(test_utf8(0x0100d800, NULL) == 0); // Unicode surrogates + assert(test_utf8(0x0100dfff, NULL) == 0); // Unicode surrogates assert(test_utf8(0x1110000, NULL) == 0); assert(test_utf32_to_keysym('y', XKB_KEY_y)); @@ -255,6 +257,8 @@ main(void) assert(test_utf32_to_keysym(0x20ac, XKB_KEY_EuroSign)); // Unicode non-characters + assert(test_utf32_to_keysym(0xd800, XKB_KEY_NoSymbol)); // Unicode surrogates + assert(test_utf32_to_keysym(0xdfff, XKB_KEY_NoSymbol)); // Unicode surrogates assert(test_utf32_to_keysym(0xfdd0, XKB_KEY_NoSymbol)); assert(test_utf32_to_keysym(0xfdef, XKB_KEY_NoSymbol)); assert(test_utf32_to_keysym(0xfffe, XKB_KEY_NoSymbol)); |