summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJanne Grunau <j@jannau.net>2024-03-16 22:50:24 +0100
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2024-03-21 06:56:14 +0100
commit9566b3b321345e4d049611a17314e087d326f4c9 (patch)
treeb6efdd37a6631f85fa90237c9b29189b7a277837 /lib
parente35feb99ab82c36355bcb09fc7c3aad321e56825 (diff)
downloadu-boot-9566b3b321345e4d049611a17314e087d326f4c9.tar.gz
u-boot-9566b3b321345e4d049611a17314e087d326f4c9.tar.bz2
u-boot-9566b3b321345e4d049611a17314e087d326f4c9.zip
efi_selftest: Update StrToFat() unit test after CP473 map extension
Test that Unicode code points which map to CP437 code points 1-31 are converted to '_'. This ensures no FAT file names do not contain chars which are control characters in other code pages (CP 1250 for example). Signed-off-by: Janne Grunau <j@jannau.net> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/efi_selftest/efi_selftest_unicode_collation.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/efi_selftest/efi_selftest_unicode_collation.c b/lib/efi_selftest/efi_selftest_unicode_collation.c
index 32c99caf35..ad7dfa9fb9 100644
--- a/lib/efi_selftest/efi_selftest_unicode_collation.c
+++ b/lib/efi_selftest/efi_selftest_unicode_collation.c
@@ -220,6 +220,18 @@ static int test_str_to_fat(void)
return EFI_ST_FAILURE;
}
+ /*
+ * Test unicode code points which map to CP 437 0x01 - 0x1f are
+ * converted to '_'.
+ */
+ boottime->set_mem(fat, 16, 0);
+ ret = unicode_collation_protocol->str_to_fat(unicode_collation_protocol,
+ u"\u263a\u2666\u2022\u25d8\u2642\u2194\u00b6\u203c", 8, fat);
+ if (!ret || efi_st_strcmp_16_8(u"________", fat)) {
+ efi_st_error("str_to_fat returned %u, \"%s\"\n", ret, fat);
+ return EFI_ST_FAILURE;
+ }
+
return EFI_ST_SUCCESS;
}