We're using actually a uint16_t for BGENV, not a wchar_t, which is 32 bit wide in current libc. Since the env block is the only user, this should be without side effects.
Signed-off-by: Tobias Schmidl <[email protected]> --- env/env_api.c | 8 ++++---- env/env_api_fat.c | 2 +- include/env_api.h | 5 +++-- tools/tests/test_ebgenv_api.c | 2 +- tools/tests/test_ebgenv_api_internal.c | 8 ++++---- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/env/env_api.c b/env/env_api.c index 1fad1d7..6ecd24d 100644 --- a/env/env_api.c +++ b/env/env_api.c @@ -26,7 +26,7 @@ * Thus, the needed conversion by truncation function is * reimplemented here. */ -char *str16to8(char *buffer, const wchar_t *src) +char *str16to8(char *buffer, const char16_t *src) { if (!src || !buffer) { return NULL; @@ -41,14 +41,14 @@ char *str16to8(char *buffer, const wchar_t *src) return tmp; } -wchar_t *str8to16(wchar_t *buffer, const char *src) +char16_t *str8to16(char16_t *buffer, const char *src) { if (!src || !buffer) { return NULL; } - wchar_t *tmp = buffer; + char16_t *tmp = buffer; while (*src) { - *buffer = (wchar_t)*src; + *buffer = (char16_t)*src; src++; buffer++; } diff --git a/env/env_api_fat.c b/env/env_api_fat.c index 1c01a52..a08100b 100644 --- a/env/env_api_fat.c +++ b/env/env_api_fat.c @@ -277,7 +277,7 @@ static int bgenv_get_uint(char *buffer, uint64_t *type, void *data, } static int bgenv_get_string(char *buffer, uint64_t *type, void *data, - wchar_t *srcstr) + const char16_t *srcstr) { str16to8(buffer, srcstr); if (!data) { diff --git a/include/env_api.h b/include/env_api.h index 90a0568..e6b58d4 100644 --- a/include/env_api.h +++ b/include/env_api.h @@ -31,6 +31,7 @@ #include <zlib.h> #include "envdata.h" #include "ebgenv.h" +#include <uchar.h> #ifdef DEBUG #define printf_debug(fmt, ...) printf(fmt, __VA_ARGS__) @@ -74,8 +75,8 @@ typedef struct gc_item { extern void bgenv_be_verbose(bool v); -extern char *str16to8(char *buffer, const wchar_t *src); -extern wchar_t *str8to16(wchar_t *buffer, const char *src); +extern char *str16to8(char *buffer, const char16_t *src); +extern char16_t *str8to16(char16_t *buffer, const char *src); extern bool bgenv_init(void); extern void bgenv_finalize(void); diff --git a/tools/tests/test_ebgenv_api.c b/tools/tests/test_ebgenv_api.c index 9623bb7..8efa9d3 100644 --- a/tools/tests/test_ebgenv_api.c +++ b/tools/tests/test_ebgenv_api.c @@ -87,7 +87,7 @@ START_TEST(ebgenv_api_ebg_env_create_new) { ebgenv_t e; int ret; - wchar_t bufferw[10]; + char16_t bufferw[10]; char buffer[10]; char *kernelfile = "kernel123"; char *kernelparams = "param456"; diff --git a/tools/tests/test_ebgenv_api_internal.c b/tools/tests/test_ebgenv_api_internal.c index 0d70a7c..1ed1d99 100644 --- a/tools/tests/test_ebgenv_api_internal.c +++ b/tools/tests/test_ebgenv_api_internal.c @@ -43,11 +43,11 @@ BG_ENVDATA envdata[ENV_NUM_CONFIG_PARTS]; START_TEST(ebgenv_api_internal_strXtoY) { - wchar_t *exp_res = L"This is a test"; - wchar_t bufferw[16]; + char16_t *exp_res = L"This is a test"; + char16_t bufferw[16]; char buffer[16]; char *input = "This is a test"; - wchar_t *resw; + char16_t *resw; char *res; /* Test conversion from ASCII bits to 16 bit encoding @@ -259,7 +259,7 @@ START_TEST(ebgenv_api_internal_bgenv_get) BGENV *handle = bgenv_open_latest(); ck_assert(handle != NULL); - wchar_t buffer[ENV_STRING_LENGTH]; + char16_t buffer[ENV_STRING_LENGTH]; char *test_strings[] = { "kernelfile_test123", "kernelparams_test123", -- 2.36.1 -- You received this message because you are subscribed to the Google Groups "EFI Boot Guard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/efibootguard-dev/20220805111348.582754-1-tobiasschmidl%40siemens.com.
