1 Index: source/i18n/csrucode.cpp 2 =================================================================== 3 --- source/i18n/csrucode.cpp (revision 214189) 4 +++ source/i18n/csrucode.cpp (working copy) 5 @@ -31,8 +31,9 @@ 6 int32_t CharsetRecog_UTF_16_BE::match(InputText* textIn) 7 { 8 const uint8_t *input = textIn->fRawInput; 9 + int32_t length = textIn->fRawLength; 10 11 - if (input[0] == 0xFE && input[1] == 0xFF) { 12 + if (length >=2 && input[0] == 0xFE && input[1] == 0xFF) { 13 return 100; 14 } 15 16 @@ -53,8 +54,9 @@ 17 int32_t CharsetRecog_UTF_16_LE::match(InputText* textIn) 18 { 19 const uint8_t *input = textIn->fRawInput; 20 + int32_t length = textIn->fRawLength; 21 22 - if (input[0] == 0xFF && input[1] == 0xFE && (input[2] != 0x00 || input[3] != 0x00)) { 23 + if (length >= 4 && input[0] == 0xFF && input[1] == 0xFE && (input[2] != 0x00 || input[3] != 0x00)) { 24 return 100; 25 } 26 27 @@ -76,7 +78,7 @@ 28 bool hasBOM = FALSE; 29 int32_t confidence = 0; 30 31 - if (getChar(input, 0) == 0x0000FEFFUL) { 32 + if (limit > 0 && getChar(input, 0) == 0x0000FEFFUL) { 33 hasBOM = TRUE; 34 } 35 36