From 273e940fa112be6e98f7bf24ded1198fc4eaedec Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 28 Sep 2011 17:05:38 +0000 Subject: [PATCH] findbugs --- .../net/i2p/i2ptunnel/HTTPResponseOutputStream.java | 4 +--- .../src/net/i2p/i2ptunnel/I2PTunnelClientBase.java | 11 ++++++----- .../src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java | 6 +++--- .../src/net/i2p/client/streaming/Connection.java | 6 +++--- .../net/i2p/client/streaming/MessageInputStream.java | 8 ++++---- core/java/src/net/i2p/client/I2PSessionImpl.java | 6 ++---- core/java/src/net/i2p/client/I2PSimpleSession.java | 6 ++---- .../i2p/client/naming/BlockfileNamingService.java | 4 ++++ .../i2p/client/naming/SingleFileNamingService.java | 1 + .../net/i2p/crypto/CryptixRijndael_Algorithm.java | 8 +++++++- core/java/src/net/i2p/crypto/ElGamalAESEngine.java | 2 ++ core/java/src/net/i2p/crypto/HMAC256Generator.java | 2 +- .../net/i2p/crypto/TransientSessionKeyManager.java | 12 ++++++------ core/java/src/net/i2p/time/NtpMessage.java | 3 ++- core/java/src/net/i2p/time/Timestamper.java | 4 +++- core/java/src/net/metanotion/io/block/BlockFile.java | 2 +- .../kademlia/KademliaNetworkDatabaseFacade.java | 2 +- 17 files changed, 49 insertions(+), 38 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java index 441c863f9..174b5707e 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java @@ -292,11 +292,9 @@ class HTTPResponseOutputStream extends FilterOutputStream { } finally { if (_log.shouldLog(Log.INFO) && (_in != null)) _log.info("After decompression, written=" + written + - (_in != null ? " read=" + _in.getTotalRead() + ", expanded=" + _in.getTotalExpanded() + ", remaining=" + _in.getRemaining() - + ", finished=" + _in.getFinished() - : "")); + + ", finished=" + _in.getFinished()); if (ba != null) _cache.release(ba); if (_out != null) try { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java index fa7b5e2e1..c776c898c 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java @@ -212,10 +212,11 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna try { Thread.sleep(10*1000); } catch (InterruptedException ie) {} } } - if (sockMgr == null) { - l.log("Invalid I2CP configuration"); - throw new IllegalArgumentException("Socket manager could not be created"); - } + // can't be null unless we limit the loop above + //if (sockMgr == null) { + // l.log("Invalid I2CP configuration"); + // throw new IllegalArgumentException("Socket manager could not be created"); + //} l.log("Tunnels ready for client: " + handlerName); } // else delay creating session until createI2PSocket() is called @@ -556,7 +557,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna if (localPort == 0) { localPort = ss.getLocalPort(); } - notifyEvent("clientLocalPort", new Integer(ss.getLocalPort())); + notifyEvent("clientLocalPort", Integer.valueOf(ss.getLocalPort())); // duplicates message in constructor //l.log("Listening for clients on port " + localPort + " of " + getTunnel().listenHost); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java index 6bc0d5022..2650f30a9 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java @@ -412,9 +412,9 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer { protected static String formatHeaders(Map> headers, StringBuilder command) { StringBuilder buf = new StringBuilder(command.length() + headers.size() * 64); buf.append(command.toString().trim()).append("\r\n"); - for (Iterator iter = headers.keySet().iterator(); iter.hasNext(); ) { - String name = (String)iter.next(); - for(String val: headers.get(name)) { + for (Map.Entry> e : headers.entrySet()) { + String name = e.getKey(); + for(String val: e.getValue()) { buf.append(name.trim()).append(": ").append(val.trim()).append("\r\n"); } } diff --git a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java index 20105da77..daef4ceed 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java @@ -311,7 +311,7 @@ class Connection { int windowSize; int remaining; synchronized (_outboundPackets) { - _outboundPackets.put(new Long(packet.getSequenceNum()), packet); + _outboundPackets.put(Long.valueOf(packet.getSequenceNum()), packet); windowSize = _options.getWindowSize(); remaining = windowSize - _outboundPackets.size() ; _outboundPackets.notifyAll(); @@ -441,7 +441,7 @@ class Connection { if (acked != null) { for (int i = 0; i < acked.size(); i++) { PacketLocal p = acked.get(i); - _outboundPackets.remove(new Long(p.getSequenceNum())); + _outboundPackets.remove(Long.valueOf(p.getSequenceNum())); _ackedPackets++; if (p.getNumSends() > 1) { _activeResends--; @@ -1129,7 +1129,7 @@ class Connection { synchronized (_outboundPackets) { if (_packet.getSequenceNum() == _highestAckedThrough + 1) isLowest = true; - if (_outboundPackets.containsKey(new Long(_packet.getSequenceNum()))) + if (_outboundPackets.containsKey(Long.valueOf(_packet.getSequenceNum()))) resend = true; } if ( (resend) && (_packet.getAckTime() <= 0) ) { diff --git a/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java b/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java index 883fc332c..75fe8fea0 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java @@ -229,8 +229,8 @@ class MessageInputStream extends InputStream { _highestReadyBlockId = messageId; long cur = _highestReadyBlockId + 1; // now pull in any previously pending blocks - while (_notYetReadyBlocks.containsKey(new Long(cur))) { - ByteArray ba = _notYetReadyBlocks.remove(new Long(cur)); + while (_notYetReadyBlocks.containsKey(Long.valueOf(cur))) { + ByteArray ba = _notYetReadyBlocks.remove(Long.valueOf(cur)); if ( (ba != null) && (ba.getData() != null) && (ba.getValid() > 0) ) { _readyDataBlocks.add(ba); } @@ -245,9 +245,9 @@ class MessageInputStream extends InputStream { if (_log.shouldLog(Log.DEBUG)) _log.debug("message is out of order: " + messageId); if (_locallyClosed) // dont need the payload, just the msgId in order - _notYetReadyBlocks.put(new Long(messageId), new ByteArray(null)); + _notYetReadyBlocks.put(Long.valueOf(messageId), new ByteArray(null)); else - _notYetReadyBlocks.put(new Long(messageId), payload); + _notYetReadyBlocks.put(Long.valueOf(messageId), payload); _dataLock.notifyAll(); } } diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index d43058db6..5ccb2de25 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -355,10 +355,8 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa _socket = new Socket(_hostname, _portNum); // _socket.setSoTimeout(1000000); // Uhmmm we could really-really use a real timeout, and handle it. _out = _socket.getOutputStream(); - synchronized (_out) { - _out.write(I2PClient.PROTOCOL_BYTE); - _out.flush(); - } + _out.write(I2PClient.PROTOCOL_BYTE); + _out.flush(); _writer = new ClientWriterRunner(_out, this); InputStream in = _socket.getInputStream(); _reader = new I2CPMessageReader(in, this); diff --git a/core/java/src/net/i2p/client/I2PSimpleSession.java b/core/java/src/net/i2p/client/I2PSimpleSession.java index e108fc008..0f1981600 100644 --- a/core/java/src/net/i2p/client/I2PSimpleSession.java +++ b/core/java/src/net/i2p/client/I2PSimpleSession.java @@ -78,10 +78,8 @@ class I2PSimpleSession extends I2PSessionImpl2 { else _socket = new Socket(_hostname, _portNum); _out = _socket.getOutputStream(); - synchronized (_out) { - _out.write(I2PClient.PROTOCOL_BYTE); - _out.flush(); - } + _out.write(I2PClient.PROTOCOL_BYTE); + _out.flush(); _writer = new ClientWriterRunner(_out, this); InputStream in = _socket.getInputStream(); _reader = new I2CPMessageReader(in, this); diff --git a/core/java/src/net/i2p/client/naming/BlockfileNamingService.java b/core/java/src/net/i2p/client/naming/BlockfileNamingService.java index aa440929f..7c07aa903 100644 --- a/core/java/src/net/i2p/client/naming/BlockfileNamingService.java +++ b/core/java/src/net/i2p/client/naming/BlockfileNamingService.java @@ -432,6 +432,7 @@ public class BlockfileNamingService extends DummyNamingService { * @param source may be null * @throws RuntimeException */ +/**** private void addEntry(SkipList sl, String key, Destination dest, String source) { Properties props = new Properties(); props.setProperty(PROP_ADDED, Long.toString(_context.clock().now())); @@ -439,6 +440,7 @@ public class BlockfileNamingService extends DummyNamingService { props.setProperty(PROP_SOURCE, source); addEntry(sl, key, dest, props); } +****/ /** * Caller must synchronize @@ -476,9 +478,11 @@ public class BlockfileNamingService extends DummyNamingService { * @return null without exception on error (logs only) * @since 0.8.9 */ +/**** private String getReverseEntry(Destination dest) { return getReverseEntry(dest.calculateHash()); } +****/ /** * Caller must synchronize. diff --git a/core/java/src/net/i2p/client/naming/SingleFileNamingService.java b/core/java/src/net/i2p/client/naming/SingleFileNamingService.java index 7013fb77a..93388de85 100644 --- a/core/java/src/net/i2p/client/naming/SingleFileNamingService.java +++ b/core/java/src/net/i2p/client/naming/SingleFileNamingService.java @@ -126,6 +126,7 @@ public class SingleFileNamingService extends NamingService { _log.warn("Error loading hosts file " + _file, ioe); return null; } finally { + if (in != null) try { in.close(); } catch (IOException ioe) {} releaseReadLock(); } } diff --git a/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java b/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java index 58444d023..b54086863 100644 --- a/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java +++ b/core/java/src/net/i2p/crypto/CryptixRijndael_Algorithm.java @@ -519,9 +519,11 @@ public final class CryptixRijndael_Algorithm // implicit no-argument constructor } /** A basic symmetric encryption/decryption test. */ +/**** public static boolean self_test() { return self_test(_BLOCK_SIZE); } +****/ // Rijndael own methods //........................................................................... @@ -745,6 +747,7 @@ public final class CryptixRijndael_Algorithm // implicit no-argument constructor } /** A basic symmetric encryption/decryption test for a given key size. */ +/**** private static boolean self_test(int keysize) { if (_RDEBUG) trace(_IN, "self_test(" + keysize + ")"); boolean ok = false; @@ -795,6 +798,7 @@ public final class CryptixRijndael_Algorithm // implicit no-argument constructor if (_RDEBUG) trace(_OUT, "self_test()"); return ok; } +****/ /** * Return The number of rounds for a given Rijndael's key and block sizes. @@ -894,9 +898,11 @@ public final class CryptixRijndael_Algorithm // implicit no-argument constructor // main(): use to generate the Intermediate Values KAT //........................................................................... +/**** public static void main(String[] args) { self_test(16); self_test(24); self_test(32); } -} \ No newline at end of file +****/ +} diff --git a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java index 55854afe1..99cdb9523 100644 --- a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java +++ b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java @@ -298,10 +298,12 @@ public class ElGamalAESEngine { * @param foundKey out parameter. Data must be unset when called; may be filled with a new sessionKey found during decryption * @return decrypted data or null on failure */ +/**** private byte[] decryptAESBlock(byte encrypted[], SessionKey key, byte iv[], byte sentTag[], Set foundTags, SessionKey foundKey) throws DataFormatException { return decryptAESBlock(encrypted, 0, encrypted.length, key, iv, sentTag, foundTags, foundKey); } +****/ /* * Note: package private for ElGamalTest.testAES() diff --git a/core/java/src/net/i2p/crypto/HMAC256Generator.java b/core/java/src/net/i2p/crypto/HMAC256Generator.java index 55cbd6cd9..aa30de6f6 100644 --- a/core/java/src/net/i2p/crypto/HMAC256Generator.java +++ b/core/java/src/net/i2p/crypto/HMAC256Generator.java @@ -34,7 +34,7 @@ public class HMAC256Generator extends HMACGenerator { return new I2PHMac(new Sha256ForMAC()); } - private class Sha256ForMAC extends Sha256Standalone implements Digest { + private static class Sha256ForMAC extends Sha256Standalone implements Digest { public String getAlgorithmName() { return "sha256 for hmac"; } public int getDigestSize() { return 32; } public int doFinal(byte[] out, int outOff) { diff --git a/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java b/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java index bd68f1f54..e17802042 100644 --- a/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java +++ b/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java @@ -596,10 +596,10 @@ public class TransientSessionKeyManager extends SessionKeyManager { } int total = 0; long now = _context.clock().now(); - for (Iterator iter = inboundSets.keySet().iterator(); iter.hasNext();) { - SessionKey skey = iter.next(); + for (Map.Entry> e : inboundSets.entrySet()) { + SessionKey skey = e.getKey(); Set sets = new TreeSet(new TagSetComparator()); - sets.addAll(inboundSets.get(skey)); + sets.addAll(e.getValue()); buf.append("Session key: ").append(skey.toBase64()).append("" + "# Sets: ").append(sets.size()).append("" + "
    "); @@ -653,9 +653,9 @@ public class TransientSessionKeyManager extends SessionKeyManager { * Just for the HTML method above so we can see what's going on easier * Earliest first */ - private static class TagSetComparator implements Comparator { - public int compare(Object l, Object r) { - return (int) (((TagSet)l).getDate() - ((TagSet)r).getDate()); + private static class TagSetComparator implements Comparator { + public int compare(TagSet l, TagSet r) { + return (int) (l.getDate() - r.getDate()); } } diff --git a/core/java/src/net/i2p/time/NtpMessage.java b/core/java/src/net/i2p/time/NtpMessage.java index 5db2d1390..96546382d 100644 --- a/core/java/src/net/i2p/time/NtpMessage.java +++ b/core/java/src/net/i2p/time/NtpMessage.java @@ -33,6 +33,7 @@ import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; +import net.i2p.util.RandomSource; /** * This class represents a NTP message, as specified in RFC 2030. The message @@ -399,7 +400,7 @@ public class NtpMessage { // low order bits of the timestamp with a random, unbiased // bitstring, both to avoid systematic roundoff errors and as // a means of loop detection and replay detection. - array[7+pointer] = (byte) (Math.random()*255.0); + array[7+pointer] = (byte) (RandomSource.getInstance().nextInt()); } diff --git a/core/java/src/net/i2p/time/Timestamper.java b/core/java/src/net/i2p/time/Timestamper.java index 0167c102d..addec7f74 100644 --- a/core/java/src/net/i2p/time/Timestamper.java +++ b/core/java/src/net/i2p/time/Timestamper.java @@ -321,14 +321,16 @@ public class Timestamper implements Runnable { _context.getProperty(PROP_CONCURRING_SERVERS, DEFAULT_CONCURRING_SERVERS))); } +/**** public static void main(String args[]) { System.setProperty(PROP_DISABLED, "false"); System.setProperty(PROP_QUERY_FREQUENCY, "30000"); - I2PAppContext ctx = I2PAppContext.getGlobalContext(); + I2PAppContext.getGlobalContext(); for (int i = 0; i < 5*60*1000; i += 61*1000) { try { Thread.sleep(61*1000); } catch (InterruptedException ie) {} } } +****/ /** * Interface to receive update notifications for when we query the time diff --git a/core/java/src/net/metanotion/io/block/BlockFile.java b/core/java/src/net/metanotion/io/block/BlockFile.java index 96a76d5bd..b8019e0a3 100644 --- a/core/java/src/net/metanotion/io/block/BlockFile.java +++ b/core/java/src/net/metanotion/io/block/BlockFile.java @@ -443,7 +443,7 @@ public class BlockFile { public BSkipList makeIndex(String name, Serializer key, Serializer val) throws IOException { if(metaIndex.get(name) != null) { throw new IOException("Index already exists"); } int page = allocPage(); - metaIndex.put(name, new Integer(page)); + metaIndex.put(name, Integer.valueOf(page)); BSkipList.init(this, page, spanSize); BSkipList bsl = new BSkipList(spanSize, this, page, key, val, true); openIndices.put(name, bsl); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java index 9ff0dca8e..85815e11d 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -103,7 +103,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { protected final static long DONT_FAIL_PERIOD = 10*60*1000; /** don't probe or broadcast data, just respond and search when explicitly needed */ - private final boolean QUIET = false; + private static final boolean QUIET = false; public static final String PROP_ENFORCE_NETID = "router.networkDatabase.enforceNetId"; private static final boolean DEFAULT_ENFORCE_NETID = false;