[freenet-cvs] r15438 - trunk/freenet/src/freenet/crypt

nextgens at freenetproject.org nextgens at freenetproject.org
Mon Oct 8 16:23:50 UTC 2007


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;




More information about the cvs mailing list