| Index: source/i18n/csrucode.cpp |
| =================================================================== |
| --- source/i18n/csrucode.cpp (revision 214189) |
| +++ source/i18n/csrucode.cpp (working copy) |
| @@ -31,8 +31,9 @@ |
| int32_t CharsetRecog_UTF_16_BE::match(InputText* textIn) |
| { |
| const uint8_t *input = textIn->fRawInput; |
| + int32_t length = textIn->fRawLength; |
| |
| - if (input[0] == 0xFE && input[1] == 0xFF) { |
| + if (length >=2 && input[0] == 0xFE && input[1] == 0xFF) { |
| return 100; |
| } |
| |
| @@ -53,8 +54,9 @@ |
| int32_t CharsetRecog_UTF_16_LE::match(InputText* textIn) |
| { |
| const uint8_t *input = textIn->fRawInput; |
| + int32_t length = textIn->fRawLength; |
| |
| - if (input[0] == 0xFF && input[1] == 0xFE && (input[2] != 0x00 || input[3] != 0x00)) { |
| + if (length >= 4 && input[0] == 0xFF && input[1] == 0xFE && (input[2] != 0x00 || input[3] != 0x00)) { |
| return 100; |
| } |
| |
| @@ -76,7 +78,7 @@ |
| bool hasBOM = FALSE; |
| int32_t confidence = 0; |
| |
| - if (getChar(input, 0) == 0x0000FEFFUL) { |
| + if (limit > 0 && getChar(input, 0) == 0x0000FEFFUL) { |
| hasBOM = TRUE; |
| } |
| |