From b6ea55f7ef992f88bddb9a77c91d1be014271a90 Mon Sep 17 00:00:00 2001 From: jrandom <jrandom> Date: Tue, 30 Aug 2005 02:39:37 +0000 Subject: [PATCH] more error handling (thanks frosk) --- .../net/i2p/router/transport/udp/UDPTransport.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index 99ec4e5954..f8ad0f9079 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -386,7 +386,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority public PeerState getPeerState(char capacity) { long now = _context.clock().now(); int index = _context.random().nextInt(1024); - List peers = _peersByCapacity[capacity-'A']; + int cap = capacity - 'A'; + if ( (cap < 0) || (cap >= _peersByCapacity.length) ) return null; + List peers = _peersByCapacity[cap]; int size = 0; int off = 0; PeerState rv = null; @@ -447,7 +449,10 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority PeerState peer = getPeerState(from); for (int i = 0; i < capacities.length(); i++) { char capacity = capacities.charAt(i); - List peers = _peersByCapacity[capacity-'A']; + int cap = capacity - 'A'; + if ( (cap < 0) || (cap >= _peersByCapacity.length) ) + continue; + List peers = _peersByCapacity[cap]; synchronized (peers) { if ( (peers.size() < MAX_PEERS_PER_CAPACITY) && (!peers.contains(peer)) ) peers.add(peer); @@ -605,7 +610,10 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (capacities != null) { for (int i = 0; i < capacities.length(); i++) { char capacity = capacities.charAt(i); - List peers = _peersByCapacity[capacity-'A']; + int cap = capacity - 'A'; + if ( (cap < 0) || (cap >= _peersByCapacity.length) ) + continue; + List peers = _peersByCapacity[cap]; synchronized (peers) { peers.remove(peer); } -- GitLab