Mojira Archive
MC-248793

Placing a Block Entity with sufficiently long text causes chunk saving to fail, resulting in data corruption

The bug

The game doesn't stop block entities like signs or lecterns from storing text too long to save. This means that with some creative usage of the NBT or selector JSON components, a player can effectively corrupt a chunk by simply placing a sign/lectern.

Method to reproduce

  1. Grant yourself every advancement with /advancement grant @p everything
  2. Give yourself a sign with the damaging NBT with this command:
    /give @p minecraft:oak_sign{BlockEntityTag:{Text1:'{"nbt":"","entity":"@p"}'}}
  3. Place the sign, then reload the world

Stack traces

[05:35:27] [IO-Worker-34/ERROR]: Failed to store chunk [1, -1]
java.io.UTFDataFormatException: encoded string ({"text":...ts:0b}"}) too long: 84982 bytes
	at java.io.DataOutputStream.writeUTF(DataOutputStream.java:369) ~[?:?]
	at java.io.DataOutputStream.writeUTF(DataOutputStream.java:333) ~[?:?]
	at ot.a(SourceFile:79) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:476) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:165) ~[minecraft-1.18.1-client.jar:?]
	at oi.a(SourceFile:128) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:476) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:165) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:118) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:83) ~[minecraft-1.18.1-client.jar:?]
	at crb.a(SourceFile:79) ~[minecraft-1.18.1-client.jar:?]
	at cqy.a(SourceFile:174) ~[minecraft-1.18.1-client.jar:?]
	at cqy.a(SourceFile:164) ~[minecraft-1.18.1-client.jar:?]
	at aum$b.run(SourceFile:59) [minecraft-1.18.1-client.jar:?]
	at auk.g(SourceFile:91) [minecraft-1.18.1-client.jar:?]
	at auk.a(SourceFile:146) [minecraft-1.18.1-client.jar:?]
	at auk.run(SourceFile:102) [minecraft-1.18.1-client.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:833) [?:?] 
[05:38:29] [IO-Worker-34/WARN]: Failed to read chunk [1, -1]
z: Loading NBT data
	at oc.a(SourceFile:495) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.b(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at oi$1.a(SourceFile:42) ~[minecraft-1.18.1-client.jar:?]
	at oi$1.b(SourceFile:25) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:489) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.b(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:131) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:75) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at crb.a(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at cqy.c(SourceFile:100) ~[minecraft-1.18.1-client.jar:?]
	at cqy.a(SourceFile:150) ~[minecraft-1.18.1-client.jar:?]
	at aum$b.run(SourceFile:59) [minecraft-1.18.1-client.jar:?]
	at auk.g(SourceFile:91) [minecraft-1.18.1-client.jar:?]
	at auk.a(SourceFile:146) [minecraft-1.18.1-client.jar:?]
	at auk.run(SourceFile:102) [minecraft-1.18.1-client.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.io.EOFException
	at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:346) ~[?:?]
	at java.io.DataInputStream.readUTF(DataInputStream.java:595) ~[?:?]
	at java.io.DataInputStream.readUTF(DataInputStream.java:570) ~[?:?]
	at ot$1.a(SourceFile:22) ~[minecraft-1.18.1-client.jar:?]
	at ot$1.b(SourceFile:16) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:489) ~[minecraft-1.18.1-client.jar:?]
	... 20 more
[05:38:29] [Server thread/ERROR]: Couldn't load chunk [1, -1]
java.util.concurrent.CompletionException: z: Loading NBT data
	at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:413) ~[?:?]
	at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:2118) ~[?:?]
	at cqy.a(SourceFile:84) ~[minecraft-1.18.1-client.jar:?]
	at cqw.f(SourceFile:79) ~[minecraft-1.18.1-client.jar:?]
	at acv.j(SourceFile:905) ~[minecraft-1.18.1-client.jar:?]
	at acv.m(SourceFile:557) ~[minecraft-1.18.1-client.jar:?]
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
	at auh.c(SourceFile:151) ~[minecraft-1.18.1-client.jar:?]
	at adg$b.c(SourceFile:552) ~[minecraft-1.18.1-client.jar:?]
	at auh.y(SourceFile:125) ~[minecraft-1.18.1-client.jar:?]
	at adg$b.y(SourceFile:561) ~[minecraft-1.18.1-client.jar:?]
	at adg.d(SourceFile:282) ~[minecraft-1.18.1-client.jar:?]
	at net.minecraft.server.MinecraftServer.bf(SourceFile:768) ~[minecraft-1.18.1-client.jar:?]
	at net.minecraft.server.MinecraftServer.y(SourceFile:756) ~[minecraft-1.18.1-client.jar:?]
	at auh.c(SourceFile:134) ~[minecraft-1.18.1-client.jar:?]
	at net.minecraft.server.MinecraftServer.x(SourceFile:741) ~[minecraft-1.18.1-client.jar:?]
	at net.minecraft.server.MinecraftServer.b(SourceFile:499) ~[minecraft-1.18.1-client.jar:?]
	at net.minecraft.server.MinecraftServer.f_(SourceFile:330) ~[minecraft-1.18.1-client.jar:?]
	at fcv.e(SourceFile:72) ~[minecraft-1.18.1-client.jar:?]
	at net.minecraft.server.MinecraftServer.w(SourceFile:657) ~[minecraft-1.18.1-client.jar:?]
	at net.minecraft.server.MinecraftServer.a(SourceFile:270) ~[minecraft-1.18.1-client.jar:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: z: Loading NBT data
	at oc.a(SourceFile:495) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.b(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at oi$1.a(SourceFile:42) ~[minecraft-1.18.1-client.jar:?]
	at oi$1.b(SourceFile:25) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:489) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.b(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:131) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:75) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at crb.a(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at cqy.c(SourceFile:100) ~[minecraft-1.18.1-client.jar:?]
	at cqy.a(SourceFile:150) ~[minecraft-1.18.1-client.jar:?]
	at aum$b.run(SourceFile:59) ~[minecraft-1.18.1-client.jar:?]
	at auk.g(SourceFile:91) ~[minecraft-1.18.1-client.jar:?]
	at auk.a(SourceFile:146) ~[minecraft-1.18.1-client.jar:?]
	at auk.run(SourceFile:102) ~[minecraft-1.18.1-client.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	... 1 more
Caused by: java.io.EOFException
	at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:346) ~[?:?]
	at java.io.DataInputStream.readUTF(DataInputStream.java:595) ~[?:?]
	at java.io.DataInputStream.readUTF(DataInputStream.java:570) ~[?:?]
	at ot$1.a(SourceFile:22) ~[minecraft-1.18.1-client.jar:?]
	at ot$1.b(SourceFile:16) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:489) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.b(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at oi$1.a(SourceFile:42) ~[minecraft-1.18.1-client.jar:?]
	at oi$1.b(SourceFile:25) ~[minecraft-1.18.1-client.jar:?]
	at oc.a(SourceFile:489) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at oc$1.b(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:131) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:75) ~[minecraft-1.18.1-client.jar:?]
	at om.a(SourceFile:71) ~[minecraft-1.18.1-client.jar:?]
	at crb.a(SourceFile:57) ~[minecraft-1.18.1-client.jar:?]
	at cqy.c(SourceFile:100) ~[minecraft-1.18.1-client.jar:?]
	at cqy.a(SourceFile:150) ~[minecraft-1.18.1-client.jar:?]
	at aum$b.run(SourceFile:59) ~[minecraft-1.18.1-client.jar:?]
	at auk.g(SourceFile:91) ~[minecraft-1.18.1-client.jar:?]
	at auk.a(SourceFile:146) ~[minecraft-1.18.1-client.jar:?]
	at auk.run(SourceFile:102) ~[minecraft-1.18.1-client.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	... 1 more 

 

Fixed

_Video

[Mojang] slicedlime

2022-02-24, 12:39 PM

2022-05-30, 01:43 PM

2022-05-30, 01:43 PM

1

2

Confirmed

Very Important

Commands, Crash

chunk, corruption, exploit, json, lectern, nbt, selector, sign, udfdataformatexception

1.18.1, 1.18.2 Pre-release 3, 1.18.2

1.19 Pre-release 4