Fix comparison of two identical UUID strings ending with dash '-'. In this case grub_uuidcasecmp() passes through the null terminators and actual result depends on whatever garbage follows them.
So break immediately when it reaches the end in any of the strings after a dash character '-'. Signed-off-by: Vitaly Kuzmichev <vitaly.kuzmic...@rtsoft.de> --- include/grub/misc.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/grub/misc.h b/include/grub/misc.h index 1b35a167f..12fade5de 100644 --- a/include/grub/misc.h +++ b/include/grub/misc.h @@ -264,7 +264,8 @@ grub_uuidcasecmp (const char *uuid1, const char *uuid2, grub_size_t n) while ('-' == *uuid2) ++uuid2; - if (grub_tolower ((grub_uint8_t) *uuid1) != grub_tolower ((grub_uint8_t) *uuid2)) + if (!*uuid1 || !*uuid2 || + grub_tolower ((grub_uint8_t) *uuid1) != grub_tolower ((grub_uint8_t) *uuid2)) break; uuid1++; -- 2.34.1 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel