From 002d057c924f015a731b74113f1e3ab56112fb3b Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 13 Jun 2014 21:37:18 +0000
Subject: [PATCH] findbugs all over

---
 .../java/src/org/klomp/snark/PeerMonitorTask.java      |  4 ++--
 .../java/src/org/klomp/snark/web/I2PSnarkServlet.java  |  2 +-
 .../java/src/net/i2p/i2ptunnel/I2PTunnel.java          |  2 +-
 .../src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java |  2 +-
 .../src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java     | 10 ++++------
 .../net/i2p/router/update/ConsoleUpdateManager.java    |  5 +++++
 .../src/net/i2p/client/streaming/impl/PcapWriter.java  |  2 +-
 apps/susimail/src/src/i2p/susi/webmail/Mail.java       |  6 +++---
 apps/susimail/src/src/i2p/susi/webmail/MailPart.java   |  4 ++--
 .../src/i2p/susi/webmail/pop3/BackgroundChecker.java   |  4 ++--
 .../src/src/i2p/susi/webmail/pop3/POP3MailBox.java     |  2 --
 .../net/i2p/client/RequestLeaseSetMessageHandler.java  |  2 +-
 core/java/src/net/i2p/data/Destination.java            |  5 +++++
 core/java/src/net/i2p/data/RouterIdentity.java         |  5 +++++
 core/java/src/net/i2p/data/i2cp/SessionConfig.java     |  6 +++++-
 core/java/src/net/i2p/util/LogRecord.java              |  5 +++++
 core/java/src/net/i2p/util/NativeBigInteger.java       |  6 ++++++
 .../router/message/OutboundClientMessageJobHelper.java |  2 --
 .../i2p/router/networkdb/kademlia/MessageWrapper.java  |  1 +
 19 files changed, 50 insertions(+), 25 deletions(-)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerMonitorTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerMonitorTask.java
index 00fd61764a..b7db1dad46 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerMonitorTask.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerMonitorTask.java
@@ -37,8 +37,8 @@ class PeerMonitorTask implements Runnable
 
   private final PeerCoordinator coordinator;
 
-  private long lastDownloaded = 0;
-  private long lastUploaded = 0;
+  //private long lastDownloaded = 0;
+  //private long lastUploaded = 0;
 
   PeerMonitorTask(PeerCoordinator coordinator)
   {
diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 3cbd2bc5bc..b95229c229 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -49,7 +49,7 @@ public class I2PSnarkServlet extends BasicServlet {
     /** generally "i2psnark" */
     private String _contextName;
     private SnarkManager _manager;
-    private static long _nonce;
+    private long _nonce;
     private String _themePath;
     private String _imgPath;
     private String _lastAnnounceURL;
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
index 21618273db..eb5195d2e7 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
@@ -324,7 +324,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
     /**
      *  Generic options used for clients and servers.
      *  NOT a copy, Do NOT modify for per-connection options, make a copy.
-     *  @return NOT a copy, do NOT modify for per-connection options
+     *  @return non-null, NOT a copy, do NOT modify for per-connection options
      */
     public Properties getClientOptions() { return _clientOptions; }
     
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
index 7fb82c5bcb..f87068f3af 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
@@ -608,7 +608,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
             error = usingWWWProxy ? "dnfp" : "dnf";
         }
         byte[] header = getErrorPage(error, ERR_DESTINATION_UNKNOWN);
-        String message = ise.getLocalizedMessage();
+        String message = ise != null ? ise.getLocalizedMessage() : "unknown error";
         try {
             writeErrorMessage(header, message, out, targetRequest, usingWWWProxy, wwwProxy);
         } catch(IOException ioe) {}
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
index 75f85a1cdc..c199b50752 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
@@ -255,7 +255,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
             // Port-specific spoofhost
             String spoofHost;
             int ourPort = socket.getLocalPort();
-            if (ourPort != 80 && ourPort > 0 && ourPort <= 65535 && opts != null) {
+            if (ourPort != 80 && ourPort > 0 && ourPort <= 65535) {
                 String portSpoof = opts.getProperty("spoofedHost." + ourPort);
                 if (portSpoof != null)
                     spoofHost = portSpoof.trim();
@@ -284,11 +284,9 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
             // server, reads the response headers, rewriting to include Content-encoding: x-i2p-gzip
             // if it was one of the Accept-encoding: values, and gzip the payload       
             boolean allowGZIP = true;
-            if (opts != null) {
-                String val = opts.getProperty("i2ptunnel.gzip");
-                if ( (val != null) && (!Boolean.parseBoolean(val)) ) 
-                    allowGZIP = false;
-            }
+            String val = opts.getProperty("i2ptunnel.gzip");
+            if ( (val != null) && (!Boolean.parseBoolean(val)) ) 
+                allowGZIP = false;
             if (_log.shouldLog(Log.INFO))
                 _log.info("HTTP server encoding header: " + enc + "/" + altEnc);
             boolean alt = (altEnc != null) && (altEnc.indexOf("x-i2p-gzip") >= 0);
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
index 84d656abec..7c1dc2cf85 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
@@ -1579,6 +1579,11 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             this.constraint = constraint;
         }
 
+        @Override
+        public boolean equals(Object o) {
+            return super.equals(o) && (o instanceof VersionAvailable);
+        }
+
         @Override
         public String toString() {
             return "VersionAvailable \"" + version + "\" " + sourceMap +
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
index 8e3c77c1ae..13b93ce7c1 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
@@ -235,11 +235,11 @@ public class PcapWriter {
             seq = 0xffffffff;
         else
             seq = pkt.getSequenceNum();
+        DataHelper.writeLong(_fos, 4, seq);
         long acked = 0;
         if (con != null) {
             acked = getLowestAckedThrough(pkt, con);
         }
-        DataHelper.writeLong(_fos, 4, pkt.getSequenceNum());
         DataHelper.writeLong(_fos, 4, acked);
 
         // offset and flags 2 bytes
diff --git a/apps/susimail/src/src/i2p/susi/webmail/Mail.java b/apps/susimail/src/src/i2p/susi/webmail/Mail.java
index b645156e0e..462ee32742 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/Mail.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/Mail.java
@@ -57,7 +57,7 @@ class Mail {
 	private int size;
 	public String sender,   // as received, trimmed only, not HTML escaped
 		reply, subject, dateString,
-		formattedSender,    // address only, enclosed with <>, not HTML escaped
+		//formattedSender,    // address only, enclosed with <>, not HTML escaped
 		formattedSubject,
 		formattedDate,  // US Locale, UTC
 		localFormattedDate,  // Current Locale, local time zone
@@ -78,7 +78,7 @@ class Mail {
 	
 	public Mail(String uidl) {
 		this.uidl = uidl;
-		formattedSender = unknown;
+		//formattedSender = unknown;
 		formattedSubject = unknown;
 		formattedDate = unknown;
 		localFormattedDate = unknown;
@@ -306,7 +306,7 @@ class Mail {
 
 						if( line.startsWith( "From:" ) ) {
 							sender = line.substring( 5 ).trim();
-							formattedSender = getAddress( sender );
+							//formattedSender = getAddress( sender );
 							shortSender = sender.replace("\"", "").trim();
 							int lt = shortSender.indexOf('<');
 							if (lt > 0)
diff --git a/apps/susimail/src/src/i2p/susi/webmail/MailPart.java b/apps/susimail/src/src/i2p/susi/webmail/MailPart.java
index 2a3b070a35..bda56ba589 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/MailPart.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/MailPart.java
@@ -113,9 +113,9 @@ class MailPart {
 				str = getHeaderLineAttribute( headerLines[i], "boundary" );
 				if( str != null )
 					boundary = str;
-				if( x_type != null && x_type.startsWith( "multipart" ) && boundary != null )
+				if (x_type.startsWith( "multipart" ) && boundary != null )
 					x_multipart = true;
-				if( x_type != null && x_type.startsWith( "message" ) )
+				if (x_type.startsWith( "message" ) )
 					x_message = true;
 				str = getHeaderLineAttribute( headerLines[i], "name" );
 				if( str != null )
diff --git a/apps/susimail/src/src/i2p/susi/webmail/pop3/BackgroundChecker.java b/apps/susimail/src/src/i2p/susi/webmail/pop3/BackgroundChecker.java
index f415762383..93712207fa 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/pop3/BackgroundChecker.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/pop3/BackgroundChecker.java
@@ -32,10 +32,10 @@ class BackgroundChecker {
 	private static final int MIN_CHECK_MINUTES = 15;
 	// short for testing
 	//private static final long MIN_IDLE = 10*60*1000;
-	private final long MIN_IDLE = 30*60*1000;
+	private static final long MIN_IDLE = 30*60*1000;
 	// short for testing
 	//private static final long MIN_SINCE = 10*60*1000;
-	private final long MIN_SINCE = 60*60*1000;
+	private static final long MIN_SINCE = 60*60*1000;
 
 	public BackgroundChecker(POP3MailBox mailbox) {
 		this.mailbox = mailbox;
diff --git a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java
index 630051b6ab..3b3b77abc6 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java
@@ -136,7 +136,6 @@ public class POP3MailBox implements NewMailListener {
 	 */
 	private ReadBuffer getHeader( int id ) {
 			Debug.debug(Debug.DEBUG, "getHeader(" + id + ")");
-			Integer idObj = Integer.valueOf(id);
 			ReadBuffer header = null;
 			if (id >= 1 && id <= mails) {
 				/*
@@ -234,7 +233,6 @@ public class POP3MailBox implements NewMailListener {
 	 */
 	private ReadBuffer getBody(int id) {
 			Debug.debug(Debug.DEBUG, "getBody(" + id + ")");
-			Integer idObj = Integer.valueOf(id);
 			ReadBuffer body = null;
 			if (id >= 1 && id <= mails) {
 				try {
diff --git a/core/java/src/net/i2p/client/RequestLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/RequestLeaseSetMessageHandler.java
index 662d50969d..ca72587dba 100644
--- a/core/java/src/net/i2p/client/RequestLeaseSetMessageHandler.java
+++ b/core/java/src/net/i2p/client/RequestLeaseSetMessageHandler.java
@@ -117,7 +117,7 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
                 _context.random().nextBytes(dummy);
                 spk = new SigningPrivateKey(dummy);
             }
-            session.getProducer().createLeaseSet(session, leaseSet, li.getSigningPrivateKey(), li.getPrivateKey());
+            session.getProducer().createLeaseSet(session, leaseSet, spk, li.getPrivateKey());
             session.setLeaseSet(leaseSet);
         } catch (DataFormatException dfe) {
             session.propogateError("Error signing the leaseSet", dfe);
diff --git a/core/java/src/net/i2p/data/Destination.java b/core/java/src/net/i2p/data/Destination.java
index 9533c86f48..3072ac3aa2 100644
--- a/core/java/src/net/i2p/data/Destination.java
+++ b/core/java/src/net/i2p/data/Destination.java
@@ -181,4 +181,9 @@ public class Destination extends KeysAndCert {
             _cache.clear();
         }
     }
+
+    @Override
+    public boolean equals(Object o) {
+        return super.equals(o) && (o instanceof Destination);
+    }
 }
diff --git a/core/java/src/net/i2p/data/RouterIdentity.java b/core/java/src/net/i2p/data/RouterIdentity.java
index 9ee7a15fa7..5e34844cc0 100644
--- a/core/java/src/net/i2p/data/RouterIdentity.java
+++ b/core/java/src/net/i2p/data/RouterIdentity.java
@@ -29,4 +29,9 @@ public class RouterIdentity extends KeysAndCert {
     public boolean isHidden() {
         return (_certificate != null) && (_certificate.getCertificateType() == Certificate.CERTIFICATE_TYPE_HIDDEN);
     }
+
+    @Override
+    public boolean equals(Object o) {
+        return super.equals(o) && (o instanceof LeaseSet);
+    }
 }
diff --git a/core/java/src/net/i2p/data/i2cp/SessionConfig.java b/core/java/src/net/i2p/data/i2cp/SessionConfig.java
index 6cd7e280b6..3af688092d 100644
--- a/core/java/src/net/i2p/data/i2cp/SessionConfig.java
+++ b/core/java/src/net/i2p/data/i2cp/SessionConfig.java
@@ -203,7 +203,6 @@ public class SessionConfig extends DataStructureImpl {
         _signature.writeBytes(out);
     }
 
-    /* FIXME missing hashCode() method FIXME */
     @Override
     public boolean equals(Object object) {
         if ((object != null) && (object instanceof SessionConfig)) {
@@ -217,6 +216,11 @@ public class SessionConfig extends DataStructureImpl {
         return false;
     }
 
+    @Override
+    public int hashCode() {
+        return _signature != null ? _signature.hashCode() : 0;
+    }
+
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder("[SessionConfig: ");
diff --git a/core/java/src/net/i2p/util/LogRecord.java b/core/java/src/net/i2p/util/LogRecord.java
index 5d45314a86..100186bc96 100644
--- a/core/java/src/net/i2p/util/LogRecord.java
+++ b/core/java/src/net/i2p/util/LogRecord.java
@@ -80,4 +80,9 @@ class LogRecord {
                ((_throwable == null && r._throwable == null) ||
                 (_throwable != null && r._throwable != null && _throwable.getClass() == r._throwable.getClass()));
     }
+
+    @Override
+    public int hashCode() {
+        return _message != null ? _message.hashCode() : 0;
+    }
 }
diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java
index d970d76bdf..092919cd0d 100644
--- a/core/java/src/net/i2p/util/NativeBigInteger.java
+++ b/core/java/src/net/i2p/util/NativeBigInteger.java
@@ -805,4 +805,10 @@ public class NativeBigInteger extends BigInteger {
         // use linux as the default, don't throw exception
         return "jbigi-linux-";
     }
+
+    @Override
+    public boolean equals(Object o) {
+        // for findbugs
+        return super.equals(o);
+    }
 }
diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java b/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java
index 72ce81eb08..08c001e222 100644
--- a/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java
+++ b/router/java/src/net/i2p/router/message/OutboundClientMessageJobHelper.java
@@ -260,8 +260,6 @@ class OutboundClientMessageJobHelper {
         // remembering that key+tag so that we can decrypt it later.  this means we can do the
         // garlic encryption without any ElGamal (yay)
         MessageWrapper.OneTimeSession sess = MessageWrapper.generateSession(ctx, skm);
-        if (sess == null)
-            return null;
         GarlicMessage msg = MessageWrapper.wrap(ctx, dsm, sess);
         return msg;
     }
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java b/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java
index 973c31c0d6..15ae87a8bc 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java
@@ -187,6 +187,7 @@ public class MessageWrapper {
      *  The recipient can then send us an AES-encrypted message,
      *  avoiding ElGamal.
      *
+     *  @return non-null
      *  @since 0.9.9
      */
     public static OneTimeSession generateSession(RouterContext ctx, SessionKeyManager skm) {
-- 
GitLab