/
JsonPointerOOME736Test.java
28 lines (26 loc) · 1.09 KB
/
JsonPointerOOME736Test.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package tools.jackson.core.jsonptr;
import tools.jackson.core.*;
import tools.jackson.core.exc.StreamReadException;
public class JsonPointerOOME736Test extends BaseTest
{
// such as https://github.com/nst/JSONTestSuite/blob/master/test_parsing/n_structure_100000_opening_arrays.json
public void testDeepJsonPointer() throws Exception {
int MAX_DEPTH = 120_000;
// Create nesting of 120k arrays
String INPUT = new String(new char[MAX_DEPTH]).replace("\0", "[");
JsonParser parser = createParser(MODE_READER, INPUT);
try {
while (true) {
parser.nextToken();
}
} catch (StreamReadException e) {
verifyException(e, "Unexpected end");
TokenStreamContext parsingContext = parser.streamReadContext();
JsonPointer jsonPointer = parsingContext.pathAsPointer(); // OOME
String pointer = jsonPointer.toString();
String expected = new String(new char[MAX_DEPTH - 1]).replace("\0", "/0");
assertEquals(expected, pointer);
}
parser.close();
}
}