On 3/16/24 22:50, Janne Grunau via B4 Relay wrote:
From: Janne Grunau <j...@jannau.net>

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>
---
  lib/efi_selftest/efi_selftest_unicode_collation.c | 12 ++++++++++++
  1 file changed, 12 insertions(+)

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;
+       }
+

Reviewed-by: Heinrich Schuchardt <xypron.g...@gmx.de>

        return EFI_ST_SUCCESS;
  }



Reply via email to