From 918b1acb8fd9dc5d503a35d406763eeb86ec9e82 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 19 Feb 2008 15:28:41 +0000 Subject: [PATCH] * Tunnels: Enforce max tunnel length of 8, catch an index error http://forum.i2p/viewtopic.php?t=2561 --- .../java/src/net/i2p/router/tunnel/pool/BuildHandler.java | 4 ++++ .../src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java index ee98bc4541..0ac378d9d1 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java @@ -224,6 +224,10 @@ class BuildHandler { for (int i = 0; i < cfg.getLength(); i++) { Hash peer = cfg.getPeer(i); int record = order.indexOf(new Integer(i)); + if (record < 0) { + _log.error("Bad status index " + i); + return; + } int howBad = statuses[record]; if (_log.shouldLog(Log.INFO)) _log.info(msg.getUniqueId() + ": Peer " + peer.toBase64() + " replied with status " + howBad); diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java index 565ac02ff2..78a44beb59 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java @@ -43,9 +43,11 @@ public abstract class TunnelPeerSelector { else length -= off; } - if (length < 0) - length = 0; } + if (length < 0) + length = 0; + if (length > 8) // as documented in tunnel.html + length = 8; /* if ( (ctx.tunnelManager().getOutboundTunnelCount() <= 0) || (ctx.tunnelManager().getFreeTunnelCount() <= 0) ) { -- GitLab