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;