From 6c7d2ab3ad93248ce9b73598d2693851c2aa01df Mon Sep 17 00:00:00 2001 From: gitlab-runner Date: Sat, 30 Nov 2019 23:05:28 +0800 Subject: [PATCH] Fix potential GZIPOutputStream resource leak on exception --- .../java/io/moquette/spi/impl/Qos1PublishHandler.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java b/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java index 19806b42..5723d466 100755 --- a/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java +++ b/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java @@ -179,16 +179,15 @@ public class Qos1PublishHandler extends QosPublishHandler { MemorySessionStore.Session session = m_sessionStore.getSession(clientID); if (session != null && session.getUsername().equals(fromUser)) { if (data.length > 7*1024 && session.getMqttVersion().protocolLevel() >= MqttVersion.Wildfire_1.protocolLevel()) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - GZIPOutputStream gzip; - try { - gzip = new GZIPOutputStream(out); + try ( + ByteArrayOutputStream out = new ByteArrayOutputStream(); + GZIPOutputStream gzip = new GZIPOutputStream(out) + ) { gzip.write(data); - gzip.close(); + data = out.toByteArray(); } catch (Exception e) { e.printStackTrace(); } - data = out.toByteArray(); code = (byte)ErrorCode.ERROR_CODE_SUCCESS_GZIPED.code; }