瀏覽代碼

Fix read past end of array

Ben Payne 11 年之前
父節點
當前提交
a10e6e99d4
共有 1 個文件被更改,包括 7 次插入4 次删除
  1. 7 4
      Engine/source/core/strings/unicode.cpp

+ 7 - 4
Engine/source/core/strings/unicode.cpp

@@ -601,10 +601,13 @@ bool chompUTF8BOM( const char *inString, char **outStringPtr )
 {
 {
    *outStringPtr = const_cast<char *>( inString );
    *outStringPtr = const_cast<char *>( inString );
 
 
-   U8 bom[4];
-   dMemcpy( bom, inString, 4 );
-
-   bool valid = isValidUTF8BOM( bom );
+   bool valid = false;
+   if (inString[0] && inString[1] && inString[2])
+   {
+      U8 bom[4];
+      dMemcpy(bom, inString, 4);
+      valid = isValidUTF8BOM(bom);
+   }
 
 
    // This is hackey, but I am not sure the best way to do it at the present.
    // This is hackey, but I am not sure the best way to do it at the present.
    // The only valid BOM is a UTF8 BOM, which is 3 bytes, even though we read
    // The only valid BOM is a UTF8 BOM, which is 3 bytes, even though we read