Index: /trunk/include/VBox/shflsvc.h
===================================================================
--- /trunk/include/VBox/shflsvc.h	(revision 55954)
+++ /trunk/include/VBox/shflsvc.h	(revision 55955)
@@ -222,11 +222,9 @@
 DECLINLINE(bool) ShflStringIsValidOut(PCSHFLSTRING pString, uint32_t cbBuf)
 {
-    if (RT_UNLIKELY(cbBuf <= RT_UOFFSETOF(SHFLSTRING, String)))
-        return false;
-    if (RT_UNLIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) > cbBuf))
-        return false;
-    if (RT_UNLIKELY(pString->u16Length >= pString->u16Size))
-        return false;
-    return true;
+    if (RT_LIKELY(cbBuf > RT_UOFFSETOF(SHFLSTRING, String)))
+        if (RT_LIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) <= cbBuf))
+            if (RT_LIKELY(pString->u16Length < pString->u16Size))
+                return true;
+    return false;
 }
 
@@ -243,29 +241,37 @@
 {
     int rc;
-    if (RT_UNLIKELY(cbBuf <= RT_UOFFSETOF(SHFLSTRING, String)))
-        return false;
-    if (RT_UNLIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) > cbBuf))
-        return false;
-    if (fUtf8Not16)
+    if (RT_LIKELY(cbBuf > RT_UOFFSETOF(SHFLSTRING, String)))
     {
-        /* UTF-8: */
-        if (RT_UNLIKELY(pString->u16Length >= pString->u16Size))
-            return false;
-        rc = RTStrValidateEncodingEx((const char *)&pString->String.utf8[0], pString->u16Length + 1,
-                                     RTSTR_VALIDATE_ENCODING_EXACT_LENGTH | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED);
+        if (RT_LIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) <= cbBuf))
+        {
+            if (fUtf8Not16)
+            {
+                /* UTF-8: */
+                if (RT_LIKELY(pString->u16Length < pString->u16Size))
+                {
+                    rc = RTStrValidateEncodingEx((const char *)&pString->String.utf8[0], pString->u16Length + 1,
+                                                 RTSTR_VALIDATE_ENCODING_EXACT_LENGTH | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED);
+                    if (RT_SUCCESS(rc))
+                        return true;
+                }
+            }
+            else
+            {
+                /* UTF-16: */
+                if (RT_LIKELY(!(pString->u16Length & 1)))
+                {
+                    if (RT_LIKELY((uint32_t)sizeof(RTUTF16) + pString->u16Length <= pString->u16Size))
+                    {
+                        rc = RTUtf16ValidateEncodingEx(&pString->String.ucs2[0], pString->u16Length / 2 + 1,
+                                                       RTSTR_VALIDATE_ENCODING_EXACT_LENGTH
+                                                       | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED);
+                        if (RT_SUCCESS(rc))
+                            return true;
+                    }
+                }
+            }
+        }
     }
-    else
-    {
-        /* UTF-16: */
-        if (RT_UNLIKELY(pString->u16Length & 1))
-            return false;
-        if (RT_UNLIKELY((uint32_t)sizeof(RTUTF16) + pString->u16Length > pString->u16Size))
-            return false;
-        rc = RTUtf16ValidateEncodingEx(&pString->String.ucs2[0], pString->u16Length / 2 + 1,
-                                       RTSTR_VALIDATE_ENCODING_EXACT_LENGTH | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED);
-    }
-    if (RT_FAILURE(rc))
-        return false;
-    return true;
+    return false;
 }
 
@@ -283,7 +289,7 @@
     if (pString)
         return ShflStringIsValidIn(pString, cbBuf, fUtf8Not16);
-    if (RT_UNLIKELY(cbBuf > 0))
-        return false;
-    return true;
+    if (RT_LIKELY(cbBuf == 0))
+        return true;
+    return false;
 }
 
