Skip to content

Commit 5110326

Browse files
Aggressively validate sign update component
1 parent 6887556 commit 5110326

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

common/src/main/java/com/viaversion/viarewind/api/type/RewindTypes.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.viaversion.viaversion.api.type.Type;
2929
import com.viaversion.viaversion.api.type.Types;
3030
import com.viaversion.nbt.tag.CompoundTag;
31+
import com.viaversion.viaversion.api.type.types.StringType;
3132

3233
import java.util.List;
3334

@@ -36,6 +37,7 @@
3637
*/
3738
public class RewindTypes {
3839

40+
public static final Type<String> SIGN_STRING = new StringType(384);
3941
public static final Type<int[]> INT_ARRAY = new IntArrayType(); // Integer array with byte as length indicator
4042

4143
public static final Type<BlockPosition> SHORT_POSITION = new PositionVarYType<>(Types.SHORT, value -> (short) value);

common/src/main/java/com/viaversion/viarewind/protocol/v1_9to1_8/rewriter/PlayerPacketRewriter1_9.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package com.viaversion.viarewind.protocol.v1_9to1_8.rewriter;
1919

2020
import com.viaversion.viarewind.ViaRewind;
21+
import com.viaversion.viarewind.api.type.RewindTypes;
2122
import com.viaversion.viarewind.protocol.v1_9to1_8.Protocol1_9To1_8;
2223
import com.viaversion.viarewind.protocol.v1_9to1_8.storage.*;
2324
import com.viaversion.viarewind.utils.ChatUtil;
@@ -36,10 +37,12 @@
3637
import com.viaversion.nbt.tag.ListTag;
3738
import com.viaversion.nbt.tag.StringTag;
3839
import com.viaversion.viaversion.api.minecraft.ClientWorld;
40+
import com.viaversion.viaversion.libs.gson.JsonParser;
3941
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ClientboundPackets1_8;
4042
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ClientboundPackets1_9;
4143
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ServerboundPackets1_8;
4244
import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ServerboundPackets1_9;
45+
import com.viaversion.viaversion.util.StringUtil;
4346

4447
import java.util.ArrayList;
4548
import java.util.List;
@@ -438,7 +441,12 @@ public void register() {
438441
map(Types.BLOCK_POSITION1_8); // Position
439442
handler(wrapper -> {
440443
for (int i = 0; i < 4; i++) {
441-
wrapper.write(Types.STRING, ChatUtil.jsonToLegacy(wrapper.read(Types.COMPONENT)));
444+
final JsonElement json = JsonParser.parseString(wrapper.read(RewindTypes.SIGN_STRING));
445+
if (!json.isJsonPrimitive()) {
446+
throw new IllegalStateException("Invalid sign text: " + StringUtil.forLogging(json));
447+
}
448+
449+
wrapper.write(Types.STRING, ChatUtil.jsonToLegacy(json));
442450
}
443451
});
444452
}

0 commit comments

Comments
 (0)