From 045627a5839f7c36a49a95ce12802356b3a2b5c2 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 16 Mar 2012 12:17:07 +0000
Subject: [PATCH] throw ISE on attempt to change peer value

---
 .../i2p/router/transport/crypto/DHSessionKeyBuilder.java | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java b/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java
index 930078ba0f..06b4727ab5 100644
--- a/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java
+++ b/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java
@@ -198,9 +198,14 @@ public class DHSessionKeyBuilder {
 
     /**
      * Specify the value given by the peer for use in the session key negotiation
-     *
+     * @throws IllegalStateException if already set
      */
-    public void setPeerPublicValue(BigInteger peerVal) throws InvalidPublicParameterException {
+    public synchronized void setPeerPublicValue(BigInteger peerVal) throws InvalidPublicParameterException {
+        if (_peerValue != null) {
+            if (!_peerValue.equals(peerVal))
+                throw new IllegalStateException();
+            return;
+        }
         validatePublic(peerVal);
         _peerValue = peerVal;
     }
-- 
GitLab