Index: /trunk/src/VBox/Runtime/generic/uuid-generic.cpp
===================================================================
--- /trunk/src/VBox/Runtime/generic/uuid-generic.cpp	(revision 32993)
+++ /trunk/src/VBox/Runtime/generic/uuid-generic.cpp	(revision 32994)
@@ -257,7 +257,6 @@
     AssertPtrReturn(pszString, VERR_INVALID_PARAMETER);
 
-    fHaveBraces = (pszString[0] == '{' && pszString[37] == '}');
-    if (fHaveBraces)
-        pszString++;
+    fHaveBraces = pszString[0] == '{';
+    pszString += fHaveBraces;
 
 #define MY_CHECK(expr) do { if (RT_UNLIKELY(!(expr))) return VERR_INVALID_UUID_FORMAT; } while (0)
@@ -299,5 +298,7 @@
     MY_CHECK(MY_ISXDIGIT(pszString[34]));
     MY_CHECK(MY_ISXDIGIT(pszString[35]));
-    MY_CHECK(!pszString[36 + (fHaveBraces ? 1 : 0)]);
+    if (fHaveBraces)
+        MY_CHECK(pszString[36] == '}');
+    MY_CHECK(!pszString[36 + fHaveBraces]);
 #undef MY_ISXDIGIT
 #undef MY_CHECK
Index: /trunk/src/VBox/Runtime/testcase/tstRTUuid.cpp
===================================================================
--- /trunk/src/VBox/Runtime/testcase/tstRTUuid.cpp	(revision 32993)
+++ /trunk/src/VBox/Runtime/testcase/tstRTUuid.cpp	(revision 32994)
@@ -74,4 +74,40 @@
     rc = RTUuidFromStr(&Uuid2, sz); CHECK_RC();
     RTTEST_CHECK(hTest, RTUuidCompare(&Uuid, &Uuid2) == 0);
+
+    char *psz = (char *)RTTestGuardedAllocTail(hTest, RTUUID_STR_LENGTH);
+    if (psz)
+    {
+        RTStrPrintf(psz, RTUUID_STR_LENGTH, "%s", sz);
+        RTTESTI_CHECK_RC(RTUuidFromStr(&Uuid2, psz), VINF_SUCCESS);
+        RTTEST_CHECK(hTest, RTUuidCompare(&Uuid, &Uuid2) == 0);
+        for (unsigned off = 1; off < RTUUID_STR_LENGTH; off++)
+        {
+            char *psz2 = psz + off;
+            RTStrPrintf(psz2, RTUUID_STR_LENGTH - off, "%s", sz);
+            RTTESTI_CHECK_RC(RTUuidFromStr(&Uuid2, psz2), VERR_INVALID_UUID_FORMAT);
+        }
+        RTTestGuardedFree(hTest, psz);
+    }
+
+    RTUuidClear(&Uuid2);
+    char sz2[RTUUID_STR_LENGTH + 2];
+    RTStrPrintf(sz2, sizeof(sz2), "{%s}", sz);
+    rc = RTUuidFromStr(&Uuid2, sz2); CHECK_RC();
+    RTTEST_CHECK(hTest, RTUuidCompare(&Uuid, &Uuid2) == 0);
+
+    psz = (char *)RTTestGuardedAllocTail(hTest, RTUUID_STR_LENGTH + 2);
+    if (psz)
+    {
+        RTStrPrintf(psz, RTUUID_STR_LENGTH + 2, "{%s}", sz);
+        RTTESTI_CHECK_RC(RTUuidFromStr(&Uuid2, psz), VINF_SUCCESS);
+        RTTEST_CHECK(hTest, RTUuidCompare(&Uuid, &Uuid2) == 0);
+        for (unsigned off = 1; off < RTUUID_STR_LENGTH + 2; off++)
+        {
+            char *psz2 = psz + off;
+            RTStrPrintf(psz2, RTUUID_STR_LENGTH + 2 - off, "{%s}", sz);
+            RTTESTI_CHECK_RC(RTUuidFromStr(&Uuid2, psz2), VERR_INVALID_UUID_FORMAT);
+        }
+        RTTestGuardedFree(hTest, psz);
+    }
 
     RTTestSub(hTest, "RTUuidToUtf16");
