diff --git a/lldb/source/Utility/UUID.cpp b/lldb/source/Utility/UUID.cpp --- a/lldb/source/Utility/UUID.cpp +++ b/lldb/source/Utility/UUID.cpp @@ -64,7 +64,7 @@ llvm::SmallVectorImpl &uuid_bytes, uint32_t num_uuid_bytes) { uuid_bytes.clear(); - while (!p.empty()) { + while (p.size() > 1) { if (isxdigit(p[0]) && isxdigit(p[1])) { int hi_nibble = xdigit_to_int(p[0]); int lo_nibble = xdigit_to_int(p[1]); diff --git a/lldb/unittests/Utility/UUIDTest.cpp b/lldb/unittests/Utility/UUIDTest.cpp --- a/lldb/unittests/Utility/UUIDTest.cpp +++ b/lldb/unittests/Utility/UUIDTest.cpp @@ -69,6 +69,7 @@ EXPECT_EQ(0u, u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f", 20)); EXPECT_EQ(0u, u.SetFromStringRef("40xxxxx")); + EXPECT_EQ(0u, u.SetFromStringRef("404142434445464748494a4b4c4d4e4")); EXPECT_EQ(0u, u.SetFromStringRef("")); EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u) << "uuid was changed by failed parse calls";