From 4702534f9cd43e3bc5ae5ccddbb71c526d2e1ccb Mon Sep 17 00:00:00 2001 From: Julian Krings Date: Sun, 24 Aug 2025 17:21:21 +0200 Subject: [PATCH] add size check to prevent further corruption in case of read offset --- .../java/com/volmit/iris/util/mantle/MantleChunk.java | 3 +++ .../main/java/com/volmit/iris/util/matter/Matter.java | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java b/core/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java index 1c50d8c98..8ebda5ebb 100644 --- a/core/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java +++ b/core/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java @@ -109,6 +109,9 @@ public class MantleChunk { din.skipTo(end); TectonicPlate.addError(); } + if (din.count() != start + size) { + throw new IOException("Chunk section read size mismatch!"); + } } } diff --git a/core/src/main/java/com/volmit/iris/util/matter/Matter.java b/core/src/main/java/com/volmit/iris/util/matter/Matter.java index 086b397bd..c2027833c 100644 --- a/core/src/main/java/com/volmit/iris/util/matter/Matter.java +++ b/core/src/main/java/com/volmit/iris/util/matter/Matter.java @@ -99,10 +99,9 @@ public interface Matter { } static Matter read(File f) throws IOException { - FileInputStream in = new FileInputStream(f); - Matter m = read(in); - in.close(); - return m; + try (var in = new FileInputStream(f)) { + return read(in); + } } static Matter read(InputStream in) throws IOException { @@ -165,6 +164,10 @@ public interface Matter { } din.skipTo(end); } + + if (din.count() != start + size) { + throw new IOException("Matter slice read size mismatch!"); + } } return matter;