From 9c74cafd92c234c0353fdb95a4cbd8848eac93a5 Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Fri, 2 Jul 2021 07:51:01 -0400
Subject: [PATCH] UPnP: IPv6 address validation fix

---
 router/java/src/net/i2p/router/transport/UPnP.java | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java
index aa75fddfc4..4fb8850039 100644
--- a/router/java/src/net/i2p/router/transport/UPnP.java
+++ b/router/java/src/net/i2p/router/transport/UPnP.java
@@ -288,10 +288,15 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis
 					boolean v61 = ip.contains(":");
 					boolean v62 = pktIP.contains(":");
 					if (v61 == v62) {
-						ignore = true;
-						if (_log.shouldWarn())
-							_log.warn("Ignoring UPnP with IP mismatch: " + name + " UDN: " + udn +
-							          " dev IP " + ip + " pkt IP: " + pktIP);
+						// canonicalize
+						byte[] b1 = Addresses.getIP(ip);
+						byte[] b2 = Addresses.getIP(pktIP);
+						if (!DataHelper.eq(b1, b2)) {
+							ignore = true;
+							if (_log.shouldWarn())
+								_log.warn("Ignoring UPnP with IP mismatch: " + name + " UDN: " + udn +
+								          " dev IP " + ip + " pkt IP: " + pktIP);
+						}
 					}
 				}
 			}
-- 
GitLab