From 60c93f1e1c67df54e8b8594dff20cf23e7f14271 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 17 Jan 2017 15:34:38 +0000 Subject: [PATCH] Client: Don't log error on datagram dissector fail (ticket #1915), let the client do the logging. Throw early if data too short --- .../net/i2p/client/datagram/I2PDatagramDissector.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java b/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java index 42cf701bff..e401142934 100644 --- a/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java +++ b/core/java/src/net/i2p/client/datagram/I2PDatagramDissector.java @@ -31,6 +31,7 @@ import net.i2p.util.Log; public final class I2PDatagramDissector { private static final int DGRAM_BUFSIZE = 32768; + private static final int MIN_DGRAM_SIZE = 387 + 40; private final DSAEngine dsaEng = DSAEngine.getInstance(); private final SHA256Generator hashGen = SHA256Generator.getInstance(); @@ -68,9 +69,12 @@ public final class I2PDatagramDissector { * @throws DataFormatException If there's an error in the datagram format */ public void loadI2PDatagram(byte[] dgram) throws DataFormatException { - ByteArrayInputStream dgStream = new ByteArrayInputStream(dgram); // set invalid(very important!) this.valid = false; + if (dgram.length < MIN_DGRAM_SIZE) + throw new DataFormatException("repliable datagram too small: " + dgram.length); + + ByteArrayInputStream dgStream = new ByteArrayInputStream(dgram); try { // read destination @@ -96,8 +100,9 @@ public final class I2PDatagramDissector { rxHash = null; } } catch (IOException e) { - Log log = I2PAppContext.getGlobalContext().logManager().getLog(I2PDatagramDissector.class); - log.error("Error loading datagram", e); + // let the application do the logging + //Log log = I2PAppContext.getGlobalContext().logManager().getLog(I2PDatagramDissector.class); + //log.error("Error loading datagram", e); throw new DataFormatException("Error loading datagram", e); //} catch(AssertionError e) { // Log log = I2PAppContext.getGlobalContext().logManager().getLog(I2PDatagramDissector.class); -- GitLab