From ebbc81740dfd296ef66d5d5c2b76ccfcf70a98f3 Mon Sep 17 00:00:00 2001 From: Graham Date: Tue, 25 May 2021 23:31:22 +0100 Subject: [PATCH] Check the ConstantPool isn't too large Signed-off-by: Graham --- .../org/openrs2/asm/packclass/ConstantPool.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/asm/src/main/kotlin/org/openrs2/asm/packclass/ConstantPool.kt b/asm/src/main/kotlin/org/openrs2/asm/packclass/ConstantPool.kt index c5b9029d..73413072 100644 --- a/asm/src/main/kotlin/org/openrs2/asm/packclass/ConstantPool.kt +++ b/asm/src/main/kotlin/org/openrs2/asm/packclass/ConstantPool.kt @@ -29,6 +29,19 @@ public class ConstantPool private constructor( private val floats: FloatArray, private val doubles: DoubleArray ) { + init { + require(strings.size <= 65534) // must leave a spare slot for readOptionalString + require(fieldNamesAndTypes.size <= 65535) + require(methodNamesAndTypes.size <= 65535) + require(fieldRefs.size <= 65535) + require(methodRefs.size <= 65535) + require(interfaceMethodRefs.size <= 65535) + require(ints.size <= 65535) + require(longs.size <= 65535) + require(floats.size <= 65535) + require(doubles.size <= 65535) + } + public class Builder { private val strings = ObjectAVLTreeSet() private val fieldNamesAndTypes = ObjectAVLTreeSet()