This is an automated email from the ASF dual-hosted git repository. arnabp20 pushed a commit to branch branch-2.2.1 in repository https://gitbox.apache.org/repos/asf/systemds.git
commit d7d77dfc0b8ec7164bb3d9db30181aedd185fe14 Author: arnabp <[email protected]> AuthorDate: Wed Feb 2 21:25:08 2022 +0100 [SYSTEMDS-3282] Upper bound for number of decoders This patch adds a coherence check on the number of deserialized decoders in DecoderComposite object. Closes #1527. --- .../org/apache/sysds/runtime/transform/decode/DecoderComposite.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderComposite.java b/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderComposite.java index 7081405735..ca2b370d29 100644 --- a/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderComposite.java +++ b/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderComposite.java @@ -83,6 +83,7 @@ public class DecoderComposite extends Decoder public void writeExternal(ObjectOutput out) throws IOException { super.writeExternal(out); out.writeInt(_decoders.size()); + out.writeInt(_schema == null ? 0:_schema.length); //write #columns for(Decoder decoder : _decoders) { out.writeByte(DecoderFactory.getDecoderType(decoder)); decoder.writeExternal(out); @@ -93,6 +94,9 @@ public class DecoderComposite extends Decoder public void readExternal(ObjectInput in) throws IOException { super.readExternal(in); int decodersSize = in.readInt(); + int nCols = in.readInt(); + if (nCols > 0 && decodersSize > nCols*2) + throw new IOException("Too many decoders"); _decoders = new ArrayList<>(); for(int i = 0; i < decodersSize; i++) { Decoder decoder = DecoderFactory.createInstance(in.readByte());
