diff --git a/src/boot/efi/efi-string.c b/src/boot/efi/efi-string.c index ee3dc1c4a9..dd71123e9f 100644 --- a/src/boot/efi/efi-string.c +++ b/src/boot/efi/efi-string.c @@ -112,7 +112,7 @@ DEFINE_STRCPY(char16_t, strcpy16); s++; \ } \ \ - return NULL; \ + return c ? NULL : (type *) s; \ } DEFINE_STRCHR(char, strchr8); diff --git a/src/boot/efi/test-efi-string.c b/src/boot/efi/test-efi-string.c index c26973d8bd..c7e42c7b94 100644 --- a/src/boot/efi/test-efi-string.c +++ b/src/boot/efi/test-efi-string.c @@ -229,6 +229,8 @@ TEST(strchr8) { assert_se(strchr8(str, 'a') == &str[0]); assert_se(strchr8(str, 'c') == &str[2]); assert_se(strchr8(str, 'B') == &str[4]); + + assert_se(strchr8(str, 0) == str + strlen8(str)); } TEST(strchr16) { @@ -240,6 +242,8 @@ TEST(strchr16) { assert_se(strchr16(str, 'a') == &str[0]); assert_se(strchr16(str, 'c') == &str[2]); assert_se(strchr16(str, 'B') == &str[4]); + + assert_se(strchr16(str, 0) == str + strlen16(str)); } TEST(xstrndup8) {