Closed
Description
Hi,
I'm serializing an object containing 15M
values
- Jackson version:
2.14.2
Stack trace
java.lang.NegativeArraySizeException: -1649955036
at java.base/java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:86)
at java.base/java.lang.StringBuilder.<init>(StringBuilder.java:116)
at com.fasterxml.jackson.core.util.TextBuffer.contentsAsString(TextBuffer.java:455)
at com.fasterxml.jackson.core.io.SegmentedStringWriter.getAndClear(SegmentedStringWriter.java:85)
at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3875)
Looks like an int
overflow somewhere in TextBuffer 👀
Minimal test case that reproduce the issue
data class MyData(
@JsonProperty("foo")
val foo: Collection<Item> = emptyList(),
@JsonProperty("bar")
val bar: Collection<Item> = emptyList(),
)
data class Item(
@JsonProperty("id")
val id: String,
@JsonProperty("value")
val value: String,
)
@Test
fun overflow() {
val report = MyData(
foo = (1..5_000_000).map { Item(UUID.randomUUID().toString(), UUID.randomUUID().toString()) },
bar = (1..10_000_000).map {
Item(
"foo=${UUID.randomUUID()}bar=${UUID.randomUUID()},barbar=${UUID.randomUUID()}",
UUID.randomUUID().toString(),
)
},
)
jacksonObjectMapper().writeValueAsString(report)
}
Result
Metadata
Metadata
Assignees
Labels
No labels