Author: nextgens
Date: 2007-10-08 16:23:50 +0000 (Mon, 08 Oct 2007)
New Revision: 15438

Modified:
   trunk/freenet/src/freenet/crypt/DSAGroup.java
Log:
Add some paranoia checks: the following trace shouldn't lead to a NPE :

INFO   | jvm 1    | 2007/10/07 23:55:37 | java.lang.NullPointerException
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.support.Base64.decode(Base64.java:122)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.crypt.DSAGroup.create(DSAGroup.java:218)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.node.PeerNode.<init>(PeerNode.java:409)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.node.DarknetPeerNode.<init>(DarknetPeerNode.java:98)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.node.PeerNode.create(PeerNode.java:2719)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.node.PeerManager.readPeers(PeerManager.java:199)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.node.PeerManager.tryReadPeers(PeerManager.java:142)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.node.Node.<init>(Node.java:763)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
freenet.node.NodeStarter.start(NodeStarter.java:152)
INFO   | jvm 1    | 2007/10/07 23:55:37 |       at 
org.tanukisoftware.wrapper.WrapperManager2.run(WrapperManag
er.java:2788)


Modified: trunk/freenet/src/freenet/crypt/DSAGroup.java
===================================================================
--- trunk/freenet/src/freenet/crypt/DSAGroup.java       2007-10-08 14:37:05 UTC 
(rev 15437)
+++ trunk/freenet/src/freenet/crypt/DSAGroup.java       2007-10-08 16:23:50 UTC 
(rev 15438)
@@ -214,9 +214,13 @@
        }

        public static DSAGroup create(SimpleFieldSet fs) throws 
IllegalBase64Exception {
-               BigInteger p = new NativeBigInteger(1, 
Base64.decode(fs.get("p")));
-               BigInteger q = new NativeBigInteger(1, 
Base64.decode(fs.get("q")));
-               BigInteger g = new NativeBigInteger(1, 
Base64.decode(fs.get("g")));
+               String myP = fs.get("p");
+               String myQ = fs.get("q");
+               String myG = fs.get("g");
+               if(myP == null || myQ == null || myG == null) throw new 
IllegalArgumentException("The given SFS doesn't contain required fields!");
+               BigInteger p = new NativeBigInteger(1, Base64.decode(myP));
+               BigInteger q = new NativeBigInteger(1, Base64.decode(myQ));
+               BigInteger g = new NativeBigInteger(1, Base64.decode(myG));
                DSAGroup dg = new DSAGroup(p, q, g);
                if(dg.equals(Global.DSAgroupBigA)) return Global.DSAgroupBigA;
                return dg;


Reply via email to