From 6aee1d645f64bf04f8cbd834fcdad55a808da686 Mon Sep 17 00:00:00 2001 From: Adrian Siekierka Date: Wed, 8 Jun 2022 19:59:27 +0200 Subject: [PATCH] #3509 fix ByteBufInputStream memory leak --- src/main/scala/li/cil/oc/common/PacketHandler.scala | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/scala/li/cil/oc/common/PacketHandler.scala b/src/main/scala/li/cil/oc/common/PacketHandler.scala index d43f004aa..ca9df6ec2 100644 --- a/src/main/scala/li/cil/oc/common/PacketHandler.scala +++ b/src/main/scala/li/cil/oc/common/PacketHandler.scala @@ -26,13 +26,18 @@ abstract class PacketHandler { // Don't crash on badly formatted packets (may have been altered by a // malicious client, in which case we don't want to allow it to kill the // server like this). Just spam the log a bit... ;) + var stream: InputStream = null try { - val stream = new ByteBufInputStream(data) - if (stream.read() == 0) dispatch(new PacketParser(stream, player)) - else dispatch(new PacketParser(new InflaterInputStream(stream), player)) + stream = new ByteBufInputStream(data) + if (stream.read() != 0) stream = new InflaterInputStream(stream) + dispatch(new PacketParser(stream, player)) } catch { case e: Throwable => OpenComputers.log.warn("Received a badly formatted packet.", e) + } finally { + if (stream != null) { + stream.close() + } } // Avoid AFK kicks by marking players as non-idle when they send packets.