Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.0.1
-
Component/s: JsonParser, ObjectMapper
-
Labels:None
-
Number of attachments :
Description
An ArrayIndexOutOfBoundsException occured when parsing an asterisk in a comment on position 4000 or a multiple of 4000 in a JSON file.
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 4000
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipCComment(UTF8StreamJsonParser.java:2444)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipComment(UTF8StreamJsonParser.java:2425)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipWSOrEnd(UTF8StreamJsonParser.java:2320)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:450)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:2601)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2548)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1759)
Erroneous Code:
while ((_inputPtr < _inputEnd) || loadMore()) {
int i = (int) _inputBuffer[_inputPtr++] & 0xFF;
int code = codes[i];
if (code != 0) {
switch (code) {
case INT_ASTERISK:
if (_inputBuffer[_inputPtr] == INT_SLASH)
break;
If the asterisk is the last character of the buffer, an error occurs when accessing _inputBuffer[_inputPtr].
Thanks for your work
Fixed: Reader-based version did have proper check already, utf8 one not.